The Fisrt Updated

This commit is contained in:
2026-01-25 13:51:15 +08:00
commit 0b71e2d301
22 changed files with 1889 additions and 0 deletions

300
1 Normal file
View File

@@ -0,0 +1,300 @@
particle minecraft:totem_of_undying ~19.607843137254903 ~22.54901960784314 ~29.41176470588235 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-29.41176470588235 ~18.627450980392158 ~19.607843137254903 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~19.607843137254903 ~23.529411764705884 ~-23.529411764705884 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-35.294117647058826 ~22.54901960784314 ~-18.627450980392158 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~14.705882352941176 ~15.686274509803921 ~-11.764705882352942 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~19.215686274509803 ~22.098039215686274 ~28.823529411764707 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-28.823529411764707 ~18.254901960784313 ~19.215686274509803 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~19.215686274509803 ~23.058823529411764 ~-23.058823529411764 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-34.588235294117645 ~22.098039215686274 ~-18.254901960784313 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~14.411764705882353 ~15.372549019607844 ~-11.529411764705882 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~18.823529411764707 ~21.647058823529413 ~28.235294117647058 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-28.235294117647058 ~17.88235294117647 ~18.823529411764707 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~18.823529411764707 ~22.58823529411765 ~-22.58823529411765 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-33.88235294117647 ~21.647058823529413 ~-17.88235294117647 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~14.117647058823529 ~15.058823529411764 ~-11.294117647058824 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~18.431372549019606 ~21.19607843137255 ~27.647058823529413 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-27.647058823529413 ~17.509803921568626 ~18.431372549019606 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~18.431372549019606 ~22.11764705882353 ~-22.11764705882353 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-33.1764705882353 ~21.19607843137255 ~-17.509803921568626 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~13.823529411764707 ~14.745098039215687 ~-11.058823529411764 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~18.03921568627451 ~20.745098039215687 ~27.058823529411764 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-27.058823529411764 ~17.137254901960784 ~18.03921568627451 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~18.03921568627451 ~21.647058823529413 ~-21.647058823529413 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-32.470588235294116 ~20.745098039215687 ~-17.137254901960784 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~13.529411764705882 ~14.431372549019608 ~-10.823529411764707 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~17.647058823529413 ~20.294117647058822 ~26.470588235294116 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-26.470588235294116 ~16.764705882352942 ~17.647058823529413 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~17.647058823529413 ~21.176470588235293 ~-21.176470588235293 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-31.764705882352942 ~20.294117647058822 ~-16.764705882352942 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~13.235294117647058 ~14.117647058823529 ~-10.588235294117647 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~17.254901960784313 ~19.84313725490196 ~25.88235294117647 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-25.88235294117647 ~16.392156862745097 ~17.254901960784313 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~17.254901960784313 ~20.705882352941178 ~-20.705882352941178 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-31.058823529411764 ~19.84313725490196 ~-16.392156862745097 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~12.941176470588236 ~13.803921568627452 ~-10.352941176470589 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~16.862745098039216 ~19.392156862745097 ~25.294117647058822 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-25.294117647058822 ~16.019607843137255 ~16.862745098039216 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~16.862745098039216 ~20.235294117647058 ~-20.235294117647058 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-30.352941176470587 ~19.392156862745097 ~-16.019607843137255 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~12.647058823529411 ~13.490196078431373 ~-10.117647058823529 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~16.470588235294116 ~18.941176470588236 ~24.705882352941178 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-24.705882352941178 ~15.647058823529411 ~16.470588235294116 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~16.470588235294116 ~19.764705882352942 ~-19.764705882352942 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-29.647058823529413 ~18.941176470588236 ~-15.647058823529411 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~12.352941176470589 ~13.176470588235293 ~-9.882352941176471 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~16.07843137254902 ~18.490196078431374 ~24.11764705882353 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-24.11764705882353 ~15.274509803921568 ~16.07843137254902 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~16.07843137254902 ~19.294117647058822 ~-19.294117647058822 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-28.941176470588236 ~18.490196078431374 ~-15.274509803921568 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~12.058823529411764 ~12.862745098039216 ~-9.647058823529411 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~15.686274509803923 ~18.03921568627451 ~23.529411764705884 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-23.529411764705884 ~14.901960784313726 ~15.686274509803923 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~15.686274509803923 ~18.823529411764707 ~-18.823529411764707 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-28.235294117647058 ~18.03921568627451 ~-14.901960784313726 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~11.764705882352942 ~12.549019607843137 ~-9.411764705882353 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~15.294117647058822 ~17.588235294117645 ~22.941176470588236 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-22.941176470588236 ~14.529411764705882 ~15.294117647058822 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~15.294117647058822 ~18.352941176470587 ~-18.352941176470587 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-27.529411764705884 ~17.588235294117645 ~-14.529411764705882 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~11.470588235294118 ~12.235294117647058 ~-9.176470588235293 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~14.901960784313726 ~17.137254901960784 ~22.352941176470587 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-22.352941176470587 ~14.156862745098039 ~14.901960784313726 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~14.901960784313726 ~17.88235294117647 ~-17.88235294117647 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-26.823529411764703 ~17.137254901960784 ~-14.156862745098039 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~11.176470588235293 ~11.92156862745098 ~-8.941176470588236 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~14.509803921568627 ~16.686274509803923 ~21.764705882352942 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-21.764705882352942 ~13.784313725490197 ~14.509803921568627 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~14.509803921568627 ~17.411764705882355 ~-17.411764705882355 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-26.11764705882353 ~16.686274509803923 ~-13.784313725490197 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~10.882352941176471 ~11.607843137254902 ~-8.705882352941178 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~14.117647058823529 ~16.235294117647058 ~21.176470588235293 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-21.176470588235293 ~13.411764705882353 ~14.117647058823529 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~14.117647058823529 ~16.941176470588236 ~-16.941176470588236 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-25.41176470588235 ~16.235294117647058 ~-13.411764705882353 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~10.588235294117647 ~11.294117647058822 ~-8.470588235294118 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~13.725490196078432 ~15.784313725490197 ~20.588235294117645 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-20.588235294117645 ~13.03921568627451 ~13.725490196078432 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~13.725490196078432 ~16.470588235294116 ~-16.470588235294116 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-24.705882352941174 ~15.784313725490197 ~-13.03921568627451 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~10.294117647058822 ~10.980392156862745 ~-8.235294117647058 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~13.333333333333332 ~15.333333333333332 ~20.0 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-20.0 ~12.666666666666666 ~13.333333333333332 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~13.333333333333332 ~16.0 ~-16.0 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-24.0 ~15.333333333333332 ~-12.666666666666666 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~10.0 ~10.666666666666668 ~-8.0 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~12.941176470588236 ~14.882352941176471 ~19.411764705882355 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-19.411764705882355 ~12.294117647058822 ~12.941176470588236 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~12.941176470588236 ~15.529411764705882 ~-15.529411764705882 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-23.294117647058822 ~14.882352941176471 ~-12.294117647058822 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~9.705882352941178 ~10.352941176470589 ~-7.764705882352941 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~12.549019607843137 ~14.431372549019608 ~18.823529411764703 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-18.823529411764703 ~11.92156862745098 ~12.549019607843137 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~12.549019607843137 ~15.058823529411764 ~-15.058823529411764 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-22.588235294117645 ~14.431372549019608 ~-11.92156862745098 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~9.411764705882351 ~10.03921568627451 ~-7.529411764705882 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~12.156862745098039 ~13.980392156862745 ~18.235294117647058 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-18.235294117647058 ~11.549019607843137 ~12.156862745098039 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~12.156862745098039 ~14.588235294117647 ~-14.588235294117647 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-21.88235294117647 ~13.980392156862745 ~-11.549019607843137 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~9.117647058823529 ~9.725490196078432 ~-7.294117647058823 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~11.764705882352942 ~13.529411764705882 ~17.647058823529413 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-17.647058823529413 ~11.176470588235293 ~11.764705882352942 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~11.764705882352942 ~14.117647058823529 ~-14.117647058823529 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-21.176470588235293 ~13.529411764705882 ~-11.176470588235293 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~8.823529411764707 ~9.411764705882353 ~-7.0588235294117645 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~11.372549019607844 ~13.07843137254902 ~17.058823529411764 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-17.058823529411764 ~10.803921568627452 ~11.372549019607844 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~11.372549019607844 ~13.647058823529411 ~-13.647058823529411 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-20.470588235294116 ~13.07843137254902 ~-10.803921568627452 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~8.529411764705882 ~9.098039215686274 ~-6.823529411764706 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~10.980392156862745 ~12.627450980392156 ~16.470588235294116 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-16.470588235294116 ~10.431372549019608 ~10.980392156862745 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~10.980392156862745 ~13.176470588235293 ~-13.176470588235293 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-19.76470588235294 ~12.627450980392156 ~-10.431372549019608 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~8.235294117647058 ~8.784313725490197 ~-6.588235294117647 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~10.588235294117647 ~12.176470588235293 ~15.882352941176471 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-15.882352941176471 ~10.058823529411764 ~10.588235294117647 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~10.588235294117647 ~12.705882352941178 ~-12.705882352941178 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-19.058823529411764 ~12.176470588235293 ~-10.058823529411764 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~7.9411764705882355 ~8.470588235294118 ~-6.352941176470589 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~10.196078431372548 ~11.72549019607843 ~15.294117647058822 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-15.294117647058822 ~9.686274509803921 ~10.196078431372548 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~10.196078431372548 ~12.23529411764706 ~-12.23529411764706 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-18.352941176470587 ~11.72549019607843 ~-9.686274509803921 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~7.647058823529411 ~8.156862745098039 ~-6.11764705882353 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~9.803921568627452 ~11.274509803921568 ~14.705882352941176 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-14.705882352941176 ~9.313725490196077 ~9.803921568627452 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~9.803921568627452 ~11.764705882352942 ~-11.764705882352942 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-17.64705882352941 ~11.274509803921568 ~-9.313725490196077 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~7.352941176470588 ~7.843137254901961 ~-5.882352941176471 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~9.411764705882353 ~10.823529411764707 ~14.117647058823529 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-14.117647058823529 ~8.941176470588236 ~9.411764705882353 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~9.411764705882353 ~11.294117647058824 ~-11.294117647058824 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-16.941176470588236 ~10.823529411764707 ~-8.941176470588236 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~7.0588235294117645 ~7.529411764705882 ~-5.647058823529412 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~9.019607843137255 ~10.372549019607844 ~13.52941176470588 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-13.52941176470588 ~8.568627450980392 ~9.019607843137255 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~9.019607843137255 ~10.823529411764707 ~-10.823529411764707 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-16.235294117647058 ~10.372549019607844 ~-8.568627450980392 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~6.76470588235294 ~7.215686274509803 ~-5.411764705882353 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~8.627450980392156 ~9.92156862745098 ~12.941176470588236 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-12.941176470588236 ~8.196078431372548 ~8.627450980392156 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~8.627450980392156 ~10.352941176470589 ~-10.352941176470589 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-15.52941176470588 ~9.92156862745098 ~-8.196078431372548 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~6.470588235294118 ~6.901960784313726 ~-5.176470588235294 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~8.23529411764706 ~9.470588235294118 ~12.352941176470587 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-12.352941176470587 ~7.8235294117647065 ~8.23529411764706 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~8.23529411764706 ~9.882352941176471 ~-9.882352941176471 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-14.823529411764703 ~9.470588235294118 ~-7.8235294117647065 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~6.1764705882352935 ~6.588235294117647 ~-4.9411764705882355 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~7.843137254901961 ~9.019607843137255 ~11.764705882352942 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-11.764705882352942 ~7.450980392156863 ~7.843137254901961 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~7.843137254901961 ~9.411764705882353 ~-9.411764705882353 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-14.117647058823529 ~9.019607843137255 ~-7.450980392156863 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~5.882352941176471 ~6.274509803921569 ~-4.705882352941177 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~7.450980392156863 ~8.568627450980392 ~11.176470588235293 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-11.176470588235293 ~7.078431372549019 ~7.450980392156863 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~7.450980392156863 ~8.941176470588236 ~-8.941176470588236 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-13.411764705882351 ~8.568627450980392 ~-7.078431372549019 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~5.588235294117647 ~5.96078431372549 ~-4.470588235294118 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~7.0588235294117645 ~8.117647058823529 ~10.588235294117645 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-10.588235294117645 ~6.705882352941176 ~7.0588235294117645 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~7.0588235294117645 ~8.470588235294118 ~-8.470588235294118 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-12.705882352941174 ~8.117647058823529 ~-6.705882352941176 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~5.2941176470588225 ~5.647058823529411 ~-4.235294117647059 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~6.666666666666666 ~7.666666666666666 ~10.0 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-10.0 ~6.333333333333332 ~6.666666666666666 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~6.666666666666666 ~8.0 ~-8.0 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-12.0 ~7.666666666666666 ~-6.333333333333332 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~5.0 ~5.333333333333334 ~-4.0 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~6.274509803921569 ~7.215686274509803 ~9.411764705882351 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-9.411764705882351 ~5.96078431372549 ~6.274509803921569 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~6.274509803921569 ~7.529411764705884 ~-7.529411764705884 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-11.294117647058822 ~7.215686274509803 ~-5.96078431372549 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~4.705882352941176 ~5.019607843137255 ~-3.764705882352942 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~5.882352941176471 ~6.764705882352942 ~8.823529411764707 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-8.823529411764707 ~5.588235294117647 ~5.882352941176471 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~5.882352941176471 ~7.0588235294117645 ~-7.0588235294117645 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-10.588235294117645 ~6.764705882352942 ~-5.588235294117647 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~4.411764705882353 ~4.7058823529411775 ~-3.5294117647058822 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~5.490196078431373 ~6.313725490196077 ~8.235294117647058 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-8.235294117647058 ~5.215686274509803 ~5.490196078431373 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~5.490196078431373 ~6.5882352941176485 ~-6.5882352941176485 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-9.882352941176467 ~6.313725490196077 ~-5.215686274509803 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~4.117647058823529 ~4.392156862745098 ~-3.2941176470588243 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~5.098039215686274 ~5.862745098039216 ~7.6470588235294095 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-7.6470588235294095 ~4.843137254901961 ~5.098039215686274 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~5.098039215686274 ~6.117647058823529 ~-6.117647058823529 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-9.176470588235293 ~5.862745098039216 ~-4.843137254901961 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~3.8235294117647047 ~4.078431372549019 ~-3.0588235294117645 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~4.7058823529411775 ~5.4117647058823515 ~7.0588235294117645 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-7.0588235294117645 ~4.470588235294118 ~4.7058823529411775 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~4.7058823529411775 ~5.647058823529413 ~-5.647058823529413 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-8.470588235294116 ~5.4117647058823515 ~-4.470588235294118 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~3.5294117647058822 ~3.764705882352942 ~-2.8235294117647065 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~4.313725490196079 ~4.96078431372549 ~6.470588235294116 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-6.470588235294116 ~4.098039215686274 ~4.313725490196079 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~4.313725490196079 ~5.1764705882352935 ~-5.1764705882352935 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-7.7647058823529385 ~4.96078431372549 ~-4.098039215686274 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~3.235294117647058 ~3.450980392156863 ~-2.5882352941176467 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~3.9215686274509807 ~4.509803921568626 ~5.882352941176471 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-5.882352941176471 ~3.7254901960784306 ~3.9215686274509807 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~3.9215686274509807 ~4.7058823529411775 ~-4.7058823529411775 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-7.0588235294117645 ~4.509803921568626 ~-3.7254901960784306 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~2.9411764705882355 ~3.137254901960784 ~-2.3529411764705888 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~3.529411764705884 ~4.0588235294117645 ~5.2941176470588225 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-5.2941176470588225 ~3.352941176470587 ~3.529411764705884 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~3.529411764705884 ~4.235294117647058 ~-4.235294117647058 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-6.352941176470587 ~4.0588235294117645 ~-3.352941176470587 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~2.6470588235294112 ~2.8235294117647065 ~-2.117647058823529 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~3.137254901960784 ~3.6078431372549034 ~4.705882352941174 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-4.705882352941174 ~2.980392156862745 ~3.137254901960784 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~3.137254901960784 ~3.764705882352942 ~-3.764705882352942 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-5.6470588235294095 ~3.6078431372549034 ~-2.980392156862745 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~2.352941176470587 ~2.5098039215686274 ~-1.882352941176471 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~2.745098039215687 ~3.1568627450980387 ~4.117647058823529 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-4.117647058823529 ~2.6078431372549034 ~2.745098039215687 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~2.745098039215687 ~3.2941176470588225 ~-3.2941176470588225 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-4.941176470588232 ~3.1568627450980387 ~-2.6078431372549034 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~2.0588235294117645 ~2.1960784313725483 ~-1.6470588235294112 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~2.352941176470587 ~2.7058823529411775 ~3.5294117647058805 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-3.5294117647058805 ~2.235294117647058 ~2.352941176470587 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~2.352941176470587 ~2.8235294117647065 ~-2.8235294117647065 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-4.235294117647058 ~2.7058823529411775 ~-2.235294117647058 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~1.7647058823529402 ~1.882352941176471 ~-1.4117647058823533 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~1.9607843137254903 ~2.254901960784313 ~2.9411764705882355 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-2.9411764705882355 ~1.8627450980392162 ~1.9607843137254903 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~1.9607843137254903 ~2.352941176470587 ~-2.352941176470587 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-3.529411764705877 ~2.254901960784313 ~-1.8627450980392162 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~1.4705882352941178 ~1.568627450980392 ~-1.1764705882352935 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~1.5686274509803937 ~1.8039215686274517 ~2.352941176470587 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-2.352941176470587 ~1.4901960784313708 ~1.5686274509803937 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~1.5686274509803937 ~1.882352941176471 ~-1.882352941176471 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-2.823529411764703 ~1.8039215686274517 ~-1.4901960784313708 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~1.1764705882352935 ~1.2549019607843146 ~-0.9411764705882355 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~1.1764705882352935 ~1.352941176470587 ~1.764705882352942 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-1.764705882352942 ~1.117647058823529 ~1.1764705882352935 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~1.1764705882352935 ~1.411764705882355 ~-1.411764705882355 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-2.117647058823529 ~1.352941176470587 ~-1.117647058823529 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~0.882352941176471 ~0.9411764705882355 ~-0.7058823529411775 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~0.7843137254901968 ~0.9019607843137258 ~1.1764705882352935 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-1.1764705882352935 ~0.7450980392156872 ~0.7843137254901968 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~0.7843137254901968 ~0.9411764705882355 ~-0.9411764705882355 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-1.411764705882348 ~0.9019607843137258 ~-0.7450980392156872 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~0.5882352941176467 ~0.6274509803921564 ~-0.47058823529411775 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~0.39215686274509665 ~0.45098039215686114 ~0.588235294117645 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-0.588235294117645 ~0.3725490196078418 ~0.39215686274509665 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~0.39215686274509665 ~0.47058823529411953 ~-0.47058823529411953 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~-0.705882352941174 ~0.45098039215686114 ~-0.3725490196078418 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~0.2941176470588225 ~0.3137254901960791 ~-0.23529411764705976 0 0 0 0.7 1000 force @a
particle minecraft:totem_of_undying ~ ~ ~ 0 0 0 0.7 1000 force @a

1
1 copy.json Normal file

File diff suppressed because one or more lines are too long

1
1.json Normal file

File diff suppressed because one or more lines are too long

0
1.py Normal file
View File

37
CFAB copy 2.py Normal file
View File

@@ -0,0 +1,37 @@
import Mil
summon_pos=[
Mil.Milib.RelativePos("~20", "~23", "~30"),
Mil.Milib.RelativePos("~-30", "~19", "~20"),
Mil.Milib.RelativePos("~20", "~24", "~-24"),
Mil.Milib.RelativePos("~-36", "~23", "~-19"),
Mil.Milib.RelativePos("~15", "~16", "~-12")
]
GC_NUMBER = 5000
COMMAND_BLOCK_POS=Mil.Milib.RelativePos("~", "~", "~")
ADAS=["@a"]
class _CFAB(Mil.MCROCN):
def __init__(self, host, password, port, debug=True):
super().__init__(host, password, port, debug=debug)
def Start(self):
self.StartDraw()
def StartDraw(self):
r=Mil.Milib._Pos1ToPos2(summon_pos[0], COMMAND_BLOCK_POS, 50, )
r2=Mil.Milib._Pos1ToPos2(summon_pos[1], COMMAND_BLOCK_POS, 50, )
r3=Mil.Milib._Pos1ToPos2(summon_pos[2], COMMAND_BLOCK_POS, 50, )
r4=Mil.Milib._Pos1ToPos2(summon_pos[3], COMMAND_BLOCK_POS, 50, )
r5=Mil.Milib._Pos1ToPos2(summon_pos[4], COMMAND_BLOCK_POS, 50, )
merged = []
for q,w,e,r,t,y in zip(r, r2, r3, r4, r5,[COMMAND_BLOCK_POS]*50):
merged.extend([q,w,e,r,t,y])
f=open("./1", "w", encoding="UTF-8")
f.write("\n".join([self.Particle("minecraft:totem_of_undying", i, Mil.Milib.Delta(), 0.7, 1000, "force", "@a", astext=True).command for i in merged]))
f.close()
CFAB=_CFAB(host="mc.gvsds.com", password="1234567890114514", port=25566)
if not CFAB.Connect(): exit()
CFAB.Start()
CFAB.disconnect()

200
CFAB copy.py Normal file
View File

@@ -0,0 +1,200 @@
import Mil
import random
import time
import os
from threading import Thread
def asyncs(f):
def wrapper(*args, **kwargs):
thr = Thread(target = f, args = args, kwargs = kwargs)
thr.start()
return wrapper
#Command the fantastic adventure of the block
# 186 64 -216
# 188 64 -173
# 212 64 -216
# 228 64 -188
# 247 64 -229
summon_pos=[
Mil.Milib.RelativePos(186, 64, -216),
Mil.Milib.RelativePos(188, 64, -173),
Mil.Milib.RelativePos(228, 64, -188),
Mil.Milib.RelativePos(247, 64, -229),
Mil.Milib.RelativePos(212, 64, -216)
]
# NV_NUMBER = 1000
GC_NUMBER = 5000
COMMAND_BLOCK_POS=Mil.Milib.RelativePos(208, 108, -204)
ADAS=["MXYYSH1"]
class _CFAB(Mil.MCROCN):
def __init__(self, host, password, port, debug=True):
super().__init__(host, password, port, debug=debug)
def Start(self):
#self.StartStory()
#CFAB.Bossbar("add", "minecraft:100", '[{"text":"==","color":"red"},{"text":"====","obfuscated":true,"color":"red"},{"text":"==","color":"red"},{{"text":"1000","color":"red"},{"text":" \u5973\u5deb","color":"dark_red"},{"text":"\u5927\u8d5b","color":"dark_green"},{"text":" \u751f\u6210","color":"gold"},{"text":"\u8fdb\u5ea6","color":"green"},{"text":" ==","color":"red"},{"text":"====","obfuscated":true,"color":"red"},{"text":"==","color":"red"}]')
#CFAB.Bossbar("set", "minecraft:100", "color", "red")
#CFAB.Bossbar("set", "minecraft:100", "max", "1000")
#CFAB.Bossbar("set", "minecraft:100", "style", "notched_20")
#CFAB.Bossbar("set", "minecraft:100", "players", "@a")
#CFAB.Bossbar("set", "minecraft:100", "visible", "true")
r=Mil.Milib._Pos1ToPos2(summon_pos[0], COMMAND_BLOCK_POS, 30)
r2=Mil.Milib._Pos1ToPos2(summon_pos[1], COMMAND_BLOCK_POS, 30)
r3=Mil.Milib._Pos1ToPos2(summon_pos[2], COMMAND_BLOCK_POS, 30)
r4=Mil.Milib._Pos1ToPos2(summon_pos[3], COMMAND_BLOCK_POS, 30)
r5=Mil.Milib._Pos1ToPos2(summon_pos[4], COMMAND_BLOCK_POS, 30)
merged = []
for q,w,e,r,t,y in zip(r, r2, r3, r4, r5,[COMMAND_BLOCK_POS]*30):
merged.extend([q,w,e,r,t,y])
for s in range(3):
self._RunCommand(f"summon minecraft:lightning_bolt {summon_pos[0]}")
self._RunCommand(f"summon minecraft:lightning_bolt {summon_pos[1]}")
self._RunCommand(f"summon minecraft:lightning_bolt {summon_pos[2]}")
self._RunCommand(f"summon minecraft:lightning_bolt {summon_pos[3]}")
self._RunCommand(f"summon minecraft:lightning_bolt {summon_pos[4]}")
_=0
for _i, i in zip(range(len(merged)), merged):
if _i % 10 == 0: self.PlaySoundWith("minecraft:block.anvil.use", ADAS)
self.Particle("minecraft:end_rod", i, Mil.Milib.Delta(), 0.2, 30, "force", "@a")
self.PlaySoundWith("minecraft:item.totem.use", ADAS)
time.sleep(0.5)
self.PlaySoundWith("minecraft:entity.elder_guardian.curse", ADAS)
self.PlaySoundWith("minecraft:entity.elder_guardian.curse", ADAS)
time.sleep(1)
for i in range(5):
self.PlaySoundWith("minecraft:entity.wither.spawn", ADAS, 10)
time.sleep(1)
self.PlaySoundWith("minecraft:item.totem.use", ADAS)
time.sleep(1)
for i in range(10):
self.Particle("minecraft:explosion", COMMAND_BLOCK_POS, Mil.Milib.Delta(10, 10, 10), 1, 100, "force", "@a")
time.sleep(0.5)
def StartStory(self):
self.TellRawAll({"text": "古老的传说在方块世界深处回响...", "color": "green"});time.sleep(5)
self.TellRawAll([{"text": "那是一个由", "color": "green"},
{"text": " 纯粹指令之力 ","color":"yellow"},
{"text": "构筑的领域。", "color": "green"},
{"text": " RCON ", "color": "red"},
{"text": "", "color": "green"},
{"text": " MCOMMAND ", "color": "red"},
{"text": "化为", "color": "green"},
{"text": "黑紫色", "color": "black"},
{"text": "", "color": "green"},
{"text": "混沌", "color": "black"},
{"text": "交织", "color": "red"}]);time.sleep(5)
self.TellRawAll([{"text": "一个", "color": "green"},
{"text": "年近古稀的老人", "color": "yellow"},
{"text": "翻开了老旧的书页,为他的重孙子念起故事,", "color": "green"}]);time.sleep(5)
self.TellRawAll([{"text": "沉寂的文字", "color": "black"},
{"text": "", "color": "green"},
{"text": "空中", "color": "blue"},
{"text": "回想", "color": "yellow"},
{"text": ",仿佛将老人又带回那天...", "color": "green"}]);time.sleep(5)
self.TellRawAll([{"text": "三十年前,", "color": "green"},
{"text": "命令方块", "color": "orange"},
{"text": "失控的夜晚,", "color": "green"},
{"text": "紫黑色", "color": "black"},
{"text": "", "color": "green"},
{"text": "代码", "color": "green"},
{"text": "洪流吞没了村庄。", "color": "black"}]);time.sleep(5)
self.TellRawAll([{"text": "他亲眼看见妻子的围裙被数据乱流撕成粉末,儿子的铁剑在抵挡", "color": "green"},
{"text": "凋灵风暴", "color": "black"},
{"text": "时断成两截。"}]);time.sleep(5)
self.TellRawAll([{"text": "最后只有他抱着尚在襁褓的孙子,蜷缩在", "color": "green"},
{"text": "基岩裂缝", "color": "black"},
{"text": "里熬到黎明。", "color": "green"}]);time.sleep(5)
self.TellRawAll([{"text": "屋外刮起一阵风声,老人突然冲出门去,看着天上", "color": "green"},
{"text": "紫黑色的暗影。", "color": "black"}]);time.sleep(5)
self.TellRawAll([{"text": "他开始呢喃着难道是它又回来了TERVIRUSCommand_BlockMCRCON还没结束吗", "color": "red"}]);time.sleep(10)
self.TellRawAll([{"text": "勇敢的冒险者啊……你脚下", "color": "green"},
{"text": "圣洁的土地", "color": "white"},
{"text": "已被", "color": "green"},
{"text": "混沌", "color": "block"},
{"text": "侵蚀。", "color": "red"}]);time.sleep(5)
self.TellRawAll([{"text": "命令方块", "color": "orange"},
{"text": ",这", "color": "green"},
{"text": "创造", "color": "blue"},
{"text": "", "color": "green"},
{"text": "毁灭", "color": "red"},
{"text": "的源头,正源源不断地", "color": "green"},
{"text": "扭曲现实", "color": "red"},
{"text": ",唤出你从未见过的", "color": "green"},
{"text": "可怖生灵。", "color": "black"}]);time.sleep(5)
self.TellRawAll({"text": "它们从数据深渊中爬出,带着不属于这个世界的狂暴与诡谲。而你,是被选中之人。", "color": "green"});time.sleep(5)
self.TellRawAll({"text": "▌试炼开启", "color": "red"});time.sleep(5)
self.TellRawAll({"text": "你的剑刃将劈开由代码生成的暗影,你的箭矢将击穿违背常理的怪物洪流。", "color": "black"});time.sleep(5)
self.TellRawAll({"text": "每一波攻势都是命令方块对你生命的嘲弄,而每一次生存都是向终极真相迈进的烙印。", "color": "black"});time.sleep(5)
self.TellRawAll({"text": "▌最终使命", "color": "red"});time.sleep(5)
self.TellRawAll({"text": "当最后一头扭曲造物在你面前崩解成闪烁的粒子,", "color": "black"});time.sleep(5)
self.TellRawAll({"text": "那悬浮于虚空中的命令方块将显露真容——摧毁它,终结这场疯狂的循环。", "color": "black"});time.sleep(5)
self.TellRawAll({"text": "但小心……或许它早已为你准备了最后的", "color": "red"});time.sleep(5)
self.TellRawAll({"text": "惊喜", "color": "red"});time.sleep(5)
self.TellRawAll({"text": ">> 世界能否回归宁静,皆系于你一念之间 <<", "color": "green"});time.sleep(5)
CFAB=_CFAB(host="mc.gvsds.com", password="1234567890114514", port=25566)
if not CFAB.Connect(): exit()
CFAB.Start()
CFAB.disconnect()
os._exit(0)
CFAB.Bossbar("add", "minecraft:1", '[{"text":"==","color":"red"},{"text":"====","obfuscated":true,"color":"red"},{"text":"==","color":"red"},{"text":" 2","color":"blue"},{"text":"v","color":"yellow"},{"text":"1000","color":"red"},{"text":" \u5973\u5deb","color":"dark_red"},{"text":"\u5927\u8d5b","color":"dark_green"},{"text":" \u751f\u6210","color":"gold"},{"text":"\u8fdb\u5ea6","color":"green"},{"text":" ==","color":"red"},{"text":"====","obfuscated":true,"color":"red"},{"text":"==","color":"red"}]')
CFAB.Bossbar("set", "minecraft:1", "color", "red")
CFAB.Bossbar("set", "minecraft:1", "max", "1000")
CFAB.Bossbar("set", "minecraft:1", "style", "notched_20")
CFAB.Bossbar("set", "minecraft:1", "players", "@a")
CFAB.Bossbar("set", "minecraft:1", "visible", "true")
for _ in range(10, -1, -1):
CFAB.SbSpeak("赛方", f"{_} 秒后开始生成")
time.sleep(1)
# 滚啊看nm呢
B=20
SummonCount=(B-1)*50
for i in range(B, 20+1):
CFAB.SbSpeak("赛方", f"开始生成第 {i} 波女巫,请选手准备迎敌!")
CFAB.SetTitle("@a", f"{i} 波!", "red")
StartRandomTime=random.uniform(0.0, 2.0)
LastRandomTime=StartRandomTime + random.uniform(0, 10.0)
for _ in range(10):
RPos = random.choice(summon_pos)
CFAB.SbSpeak("赛方", f"有一小波女巫生成在了 {RPos}")
for _ in range(5):
CFAB._RunCommand(f"summon minecraft:witch {RPos}")
SummonCount+=1
CFAB.Bossbar("set", "minecraft:1", "value", f"{SummonCount}")
time.sleep(random.uniform(StartRandomTime, LastRandomTime))
CFAB.SbSpeak("赛方", f"{i} 波女巫生成已结束,{"本次比赛已结束" if i == 20 else ("开始 300 秒 中场休息" if i == 10 else "开始 210 秒休息。")}")
time.sleep(0 if i == 20 else (270 if i == 10 else 190))
if i != 20:
CFAB.SbSpeak("赛方", "还有30秒。")
time.sleep(20)
CFAB.SbSpeak("赛方", "最后10秒做好准备")
time.sleep(10)
CFAB.SbSpeak("赛方", "生成已结束!请迅速解决剩余残孽。")
CFAB.SetTitle("@a", "生成完毕!", "green")
com=input("OK?> ")
if com == "Y":
CFAB.SbSpeak("赛方", "恭喜各位完成本次比赛!!!")
time.sleep(5)
CFAB.SbSpeak("赛方", f"诸位凭借自己的实力赢得了 {GC_NUMBER} GC")
else:
CFAB.SbSpeakRaw("赛方", "对不起,你们失败了!", "red")
time.sleep(5)
CFAB.SbSpeak("赛方", "我们下次再见!")
time.sleep(5)
CFAB.SbSpeak("赛方", "我正式宣布比赛结束!")

231
CFAB.py Normal file
View File

@@ -0,0 +1,231 @@
import Mil
import random
import time
import os
from threading import Thread
def asyncs(f):
def wrapper(*args, **kwargs):
thr = Thread(target = f, args = args, kwargs = kwargs)
thr.start()
return wrapper
#Command the fantastic adventure of the block
# 186 64 -216
# 188 64 -173
# 212 64 -216
# 228 64 -188
# 247 64 -229
summon_pos=[
Mil.Milib.RelativePos(186, 64, -216),
Mil.Milib.RelativePos(188, 64, -173),
Mil.Milib.RelativePos(228, 64, -188),
Mil.Milib.RelativePos(247, 64, -229),
Mil.Milib.RelativePos(212, 64, -216)
]
# NV_NUMBER = 1000
GC_NUMBER = 5000
COMMAND_BLOCK_POS=Mil.Milib.RelativePos(208, 108, -204)
ADAS=["@a"]
class _CFAB(Mil.MCROCN):
def __init__(self, host, password, port, debug=True):
super().__init__(host, password, port, debug=debug)
def Start(self):
self.StartStory()
self.StartDraw()
c=Mil.Milib._Pos1ToPos2DrawPi(Mil.Milib.RelativePos(195, 108, -204), Mil.Milib.RelativePos(188, 108 -204), 100)
for i in c:
self.Particle("minecraft:end_rod", i, Mil.Milib.Delta(), 0.2, 30, "force", "@a")
#CFAB.Bossbar("add", "minecraft:100", '[{"text":"==","color":"red"},{"text":"====","obfuscated":true,"color":"red"},{"text":"==","color":"red"},{{"text":"1000","color":"red"},{"text":" \u5973\u5deb","color":"dark_red"},{"text":"\u5927\u8d5b","color":"dark_green"},{"text":" \u751f\u6210","color":"gold"},{"text":"\u8fdb\u5ea6","color":"green"},{"text":" ==","color":"red"},{"text":"====","obfuscated":true,"color":"red"},{"text":"==","color":"red"}]')
#CFAB.Bossbar("set", "minecraft:100", "color", "red")
#CFAB.Bossbar("set", "minecraft:100", "max", "1000")
#CFAB.Bossbar("set", "minecraft:100", "style", "notched_20")
#CFAB.Bossbar("set", "minecraft:100", "players", "@a")
#CFAB.Bossbar("set", "minecraft:100", "visible", "true")
#s=Mil.Milib._Pos1ToPos2()
def StartDraw(self):
r=Mil.Milib._Pos1ToPos2(summon_pos[0], COMMAND_BLOCK_POS, 15)
r2=Mil.Milib._Pos1ToPos2(summon_pos[1], COMMAND_BLOCK_POS, 15)
r3=Mil.Milib._Pos1ToPos2(summon_pos[2], COMMAND_BLOCK_POS, 15)
r4=Mil.Milib._Pos1ToPos2(summon_pos[3], COMMAND_BLOCK_POS, 15)
r5=Mil.Milib._Pos1ToPos2(summon_pos[4], COMMAND_BLOCK_POS, 15)
merged = []
for q,w,e,r,t,y in zip(r, r2, r3, r4, r5,[COMMAND_BLOCK_POS]*15):
merged.extend([q,w,e,r,t,y])
for s in range(5):
if s != 0:
self._RunCommand(f"summon minecraft:lightning_bolt {summon_pos[0]}")
self._RunCommand(f"summon minecraft:lightning_bolt {summon_pos[1]}")
self._RunCommand(f"summon minecraft:lightning_bolt {summon_pos[2]}")
self._RunCommand(f"summon minecraft:lightning_bolt {summon_pos[3]}")
self._RunCommand(f"summon minecraft:lightning_bolt {summon_pos[4]}")
self.Particle("minecraft:entity_effect", summon_pos[0], Mil.Milib.Delta(5, 0 ,5), 1, 10000, "force", "@a")
_=0
for _i, i in zip(range(len(merged)), merged):
if _i < 5 and s != 0:
self.PlaySoundWith("minecraft:item.totem.use", ADAS)
self.Particle("minecraft:totem_of_undying", i, Mil.Milib.Delta(), 0.7, 1000, "force", "@a")
if i == COMMAND_BLOCK_POS:
self.Particle("minecraft:totem_of_undying", i, Mil.Milib.Delta(), 2, 1000, "force", "@a")
continue
#if _i % 10 == 0: self.PlaySoundWith("minecraft:block.anvil.use", ADAS)
self.Particle("minecraft:end_rod", i, Mil.Milib.Delta(), 0.2, 30, "force", "@a")
for i in range(5):
self._RunCommand(f"summon minecraft:lightning_bolt {COMMAND_BLOCK_POS}")
self.PlaySoundWith("block.end_portal_frame.fill", ADAS)
self.PlaySoundWith("block.end_portal_frame.fill", ADAS)
self.PlaySoundWith("block.end_portal_frame.fill", ADAS)
self.PlaySoundWith("block.end_portal_frame.fill", ADAS)
self.PlaySoundWith("block.end_portal_frame.fill", ADAS)
time.sleep(0.5)
self.PlaySoundWith("minecraft:entity.elder_guardian.curse", ADAS)
for _ in range(5):
for i in summon_pos:
self._RunCommand(f"summon minecraft:lightning_bolt {i}")
for i in range(5):
self._RunCommand(f"summon minecraft:lightning_bolt {COMMAND_BLOCK_POS}")
self.PlaySoundWith("minecraft:item.totem.use", ADAS)
self.Particle("minecraft:totem_of_undying", COMMAND_BLOCK_POS, Mil.Milib.Delta(), 2, 1000, "force", "@a")
self.PlaySoundWith("minecraft:entity.elder_guardian.curse", ADAS)
time.sleep(1)
self.Particle("minecraft:explosion", COMMAND_BLOCK_POS, Mil.Milib.Delta(10, 10, 10), 1, 100, "force", "@a")
time.sleep(1)
for i in range(5):
self.PlaySoundWith("minecraft:entity.wither.spawn", ADAS)
time.sleep(1)
self.Particle("minecraft:totem_of_undying", COMMAND_BLOCK_POS, Mil.Milib.Delta(), 2, 1000, "force", "@a")
self.PlaySoundWith("minecraft:item.totem.use", ADAS)
time.sleep(1)
self._RunCommand(f"summon minecraft:lightning_bolt {COMMAND_BLOCK_POS}")
self.Particle("minecraft:totem_of_undying", COMMAND_BLOCK_POS, Mil.Milib.Delta(), 2, 1000, "force", "@a")
time.sleep(0.5)
self.Particle("minecraft:nautilus", COMMAND_BLOCK_POS, Mil.Milib.Delta(2, 2, 2), 2, 10000, "force", "@a")
def StartStory(self):
self.TellRawAll({"text": "古老的传说在方块世界深处回响...", "color": "green"});time.sleep(5)
self.TellRawAll([{"text": "那是一个由", "color": "green"},
{"text": " 纯粹指令之力 ","color":"yellow"},
{"text": "构筑的领域。", "color": "green"},
{"text": " RCON ", "color": "red"},
{"text": "", "color": "green"},
{"text": " MCOMMAND ", "color": "red"},
{"text": "化为", "color": "green"},
{"text": "黑紫色", "color": "black"},
{"text": "", "color": "green"},
{"text": "混沌", "color": "black"},
{"text": "交织", "color": "red"}]);time.sleep(5)
self.TellRawAll([{"text": "一个", "color": "green"},
{"text": "年近古稀的老人", "color": "yellow"},
{"text": "翻开了老旧的书页,为他的重孙子念起故事,", "color": "green"}]);time.sleep(5)
self.TellRawAll([{"text": "沉寂的文字", "color": "black"},
{"text": "", "color": "green"},
{"text": "空中", "color": "blue"},
{"text": "回想", "color": "yellow"},
{"text": ",仿佛将老人又带回那天...", "color": "green"}]);time.sleep(5)
self.TellRawAll([{"text": "三十年前,", "color": "green"},
{"text": "命令方块", "color": "orange"},
{"text": "失控的夜晚,", "color": "green"},
{"text": "紫黑色", "color": "black"},
{"text": "", "color": "green"},
{"text": "代码", "color": "green"},
{"text": "洪流吞没了村庄。", "color": "black"}]);time.sleep(5)
self.TellRawAll([{"text": "他亲眼看见妻子的围裙被数据乱流撕成粉末,儿子的铁剑在抵挡", "color": "green"},
{"text": "凋灵风暴", "color": "black"},
{"text": "时断成两截。"}]);time.sleep(5)
self.TellRawAll([{"text": "最后只有他抱着尚在襁褓的孙子,蜷缩在", "color": "green"},
{"text": "基岩裂缝", "color": "black"},
{"text": "里熬到黎明。", "color": "green"}]);time.sleep(5)
self.TellRawAll([{"text": "屋外刮起一阵风声,老人突然冲出门去,看着天上", "color": "green"},
{"text": "紫黑色的暗影。", "color": "black"}]);time.sleep(5)
self.TellRawAll([{"text": "他开始呢喃着难道是它又回来了TERVIRUSCommand_BlockMCRCON还没结束吗", "color": "red"}]);time.sleep(10)
self.TellRawAll([{"text": "勇敢的冒险者啊……你脚下", "color": "green"},
{"text": "圣洁的土地", "color": "white"},
{"text": "已被", "color": "green"},
{"text": "混沌", "color": "block"},
{"text": "侵蚀。", "color": "red"}]);time.sleep(5)
self.TellRawAll([{"text": "命令方块", "color": "orange"},
{"text": ",这", "color": "green"},
{"text": "创造", "color": "blue"},
{"text": "", "color": "green"},
{"text": "毁灭", "color": "red"},
{"text": "的源头,正源源不断地", "color": "green"},
{"text": "扭曲现实", "color": "red"},
{"text": ",唤出你从未见过的", "color": "green"},
{"text": "可怖生灵。", "color": "black"}]);time.sleep(5)
self.TellRawAll({"text": "它们从数据深渊中爬出,带着不属于这个世界的狂暴与诡谲。而你,是被选中之人。", "color": "green"});time.sleep(5)
self.TellRawAll({"text": "▌试炼开启", "color": "red"});time.sleep(5)
self.TellRawAll({"text": "你的剑刃将劈开由代码生成的暗影,你的箭矢将击穿违背常理的怪物洪流。", "color": "black"});time.sleep(5)
self.TellRawAll({"text": "每一波攻势都是命令方块对你生命的嘲弄,而每一次生存都是向终极真相迈进的烙印。", "color": "black"});time.sleep(5)
self.TellRawAll({"text": "▌最终使命", "color": "red"});time.sleep(5)
self.TellRawAll({"text": "当最后一头扭曲造物在你面前崩解成闪烁的粒子,", "color": "black"});time.sleep(5)
self.TellRawAll({"text": "那悬浮于虚空中的命令方块将显露真容——摧毁它,终结这场疯狂的循环。", "color": "black"});time.sleep(5)
self.TellRawAll({"text": "但小心……或许它早已为你准备了最后的", "color": "red"});time.sleep(5)
self.TellRawAll({"text": "惊喜", "color": "red"});time.sleep(5)
self.TellRawAll({"text": ">> 世界能否回归宁静,皆系于你一念之间 <<", "color": "green"});time.sleep(5)
CFAB=_CFAB(host="mc.gvsds.com", password="1Qq@1Qq@190*", port=25566)
CFAB.connect()
# if not CFAB.Connect(): exit()
CFAB.Start()
CFAB.disconnect()
os._exit(0)
CFAB.Bossbar("add", "minecraft:1", '[{"text":"==","color":"red"},{"text":"====","obfuscated":true,"color":"red"},{"text":"==","color":"red"},{"text":" 2","color":"blue"},{"text":"v","color":"yellow"},{"text":"1000","color":"red"},{"text":" \u5973\u5deb","color":"dark_red"},{"text":"\u5927\u8d5b","color":"dark_green"},{"text":" \u751f\u6210","color":"gold"},{"text":"\u8fdb\u5ea6","color":"green"},{"text":" ==","color":"red"},{"text":"====","obfuscated":true,"color":"red"},{"text":"==","color":"red"}]')
CFAB.Bossbar("set", "minecraft:1", "color", "red")
CFAB.Bossbar("set", "minecraft:1", "max", "1000")
CFAB.Bossbar("set", "minecraft:1", "style", "notched_20")
CFAB.Bossbar("set", "minecraft:1", "players", "@a")
CFAB.Bossbar("set", "minecraft:1", "visible", "true")
for _ in range(10, -1, -1):
CFAB.SbSpeak("赛方", f"{_} 秒后开始生成")
time.sleep(1)
# 滚啊看nm呢
B=20
SummonCount=(B-1)*50
for i in range(B, 20+1):
CFAB.SbSpeak("赛方", f"开始生成第 {i} 波女巫,请选手准备迎敌!")
CFAB.SetTitle("@a", f"{i} 波!", "red")
StartRandomTime=random.uniform(0.0, 2.0)
LastRandomTime=StartRandomTime + random.uniform(0, 10.0)
for _ in range(10):
RPos = random.choice(summon_pos)
CFAB.SbSpeak("赛方", f"有一小波女巫生成在了 {RPos}")
for _ in range(5):
CFAB._RunCommand(f"summon minecraft:witch {RPos}")
SummonCount+=1
CFAB.Bossbar("set", "minecraft:1", "value", f"{SummonCount}")
time.sleep(random.uniform(StartRandomTime, LastRandomTime))
CFAB.SbSpeak("赛方", f"{i} 波女巫生成已结束,{"本次比赛已结束" if i == 20 else ("开始 300 秒 中场休息" if i == 10 else "开始 210 秒休息。")}")
time.sleep(0 if i == 20 else (270 if i == 10 else 190))
if i != 20:
CFAB.SbSpeak("赛方", "还有30秒。")
time.sleep(20)
CFAB.SbSpeak("赛方", "最后10秒做好准备")
time.sleep(10)
CFAB.SbSpeak("赛方", "生成已结束!请迅速解决剩余残孽。")
CFAB.SetTitle("@a", "生成完毕!", "green")
com=input("OK?> ")
if com == "Y":
CFAB.SbSpeak("赛方", "恭喜各位完成本次比赛!!!")
time.sleep(5)
CFAB.SbSpeak("赛方", f"诸位凭借自己的实力赢得了 {GC_NUMBER} GC")
else:
CFAB.SbSpeakRaw("赛方", "对不起,你们失败了!", "red")
time.sleep(5)
CFAB.SbSpeak("赛方", "我们下次再见!")
time.sleep(5)
CFAB.SbSpeak("赛方", "我正式宣布比赛结束!")

189
CreateE_Server.py Normal file
View File

@@ -0,0 +1,189 @@
import Mil
import random
import time
import os
class CreateE_Server(Mil.MCROCN):
def __init__(self, host, password, port, debug=True):
super().__init__(host, password, port, debug=debug)
CreateE_User=CreateE_Server(host="mc.gvsds.com", password="1Qq@1Qq@190*", port=25567)
if not CreateE_User.Connect(): exit()
#CreateE_User.Speak(f"{"="*5} Welcome to use CreateE_Server SYSTEM {"="*5}", "green")
#CreateE_User.Speak("<CreateE_Server> The Python program has connected to the RCON port at 25566")
# CreateE_User.SetTitle("@a", "CreateE Server")
#print(CreateE_User.Execute("as", "@a", "at", "@s", "run", CreateE_User.Particle("minecraft:lava", RelativePos(), Delta(), 1, 100, "force", "@a", astext=True), astext=False))
#while True:
# CreateE_User.Execute("as", "MXYYSH2", "at", "@s", "run", CreateE_User.Particle("minecraft:end_rod", RelativePos(f"~", f"~", f"~"), Delta(), 0, 1, "force", "@a", astext=True))
# 参数设置
#num_points = 1000 # 点数
#theta_max = 2 * np.pi # 旋转角度范围
#height_max = 20 # 最大高度
# 生成参数t从0到1
#t = np.linspace(0, 1, num_points)
# 计算螺旋线坐标
#theta = theta_max * t # 角度
#z = height_max * t # 高度线性增加
#r = z # 半径随高度增加而增加(锥形螺旋)
#x = r * np.cos(theta)
#y = r * np.sin(theta)
# 将坐标组合成数组
#spiral_points = np.column_stack((x, y, z))
# 打印前10个点
#for i in range(1000):
# _=spiral_points[i]
# x, y, z=_[0], _[1], _[2]
# print(CreateE_User.Execute("as", "MXYYSH1", "at", "@s", "run", CreateE_User.Particle("minecraft:end_rod", RelativePos(f"~{x}", f"~{y+20}", f"~{z}"), Delta(), 0, 1, "force", "@a", astext=True), astext=False))
#print(CreateE_User.Execute("as", "yrzd6", "at", "@s", "run", CreateE_User.Particle("minecraft:end_rod", Mil.RelativePos(f"~", f"~", f"~"), Mil.Delta(), 10, 10000, "force", "@a", astext=True), astext=False))
#user="@a"
#for i in range(500, -1, -1):
# if i % 2 == 0: CreateE_User.SetTitle(user, "I SEE U", "red")
# CreateE_User.SetSubTitle(user, f"I'm Looking For U, So Hide Well! Count {i}", "red")
# time.sleep(0.2)
#time.sleep(1)
#CreateE_User.SetTitle(user, "0", "red")
#CreateE_User.SetSubTitle(user, "0", "red")
#time.sleep(5)
#CreateE_User.Execute("as", "@a", "at", "@s", "run", "tp @s ~ ~100 ~")
#time.sleep(5)
#CreateE_User.Execute("as", "@a", "at", "@s", "run", "kill @s")
#_=CreateE_User.Data("get", "entity", "MXYYSH1")
#CreateE_User.Gamemode("creative")
#201 68 -275
#201 68 -237
#for i in range(2369, 2750):
# CreateE_User.Particle("minecraft:lava", Mil.RelativePos(f"201", f"66", f"-{i/10}"), Mil.Delta(), 1, 100, "force", "@a", astext=False)
#CreateE_User.Weather("clear")
#215 81 -368
#200 90 -373
#198 69 -362
#256 66 -174
#254 62 -183
#s=Mil.Milib._Pos1ToPos2WithPoints(600, 0,
# Mil.Milib.RelativePos(276, 83, -175),
# Mil.Milib.RelativePos(218, 63, -189),
# Mil.Milib.RelativePos(189, 73, -161)
# )
#s=Mil.Milib._Pos1ToPos2WithPoints(50, 0,
# Mil.Milib.RelativePos(256, 66, -174),
# Mil.Milib.RelativePos(254, 62, -183),
# )
#print(s)
#for i in s:
# print(i.x, i.y, i.z)
# CreateE_User.Particle("minecraft:end_rod", Mil.Milib.RelativePos(f"{i.x}", f"{i.y}", f"{i.z}"), Mil.Milib.Delta(), 0, 150, "force", "@a", astext=False)
#for i in range(3000):
# CreateE_User.Execute("as", "yrzd6", "at", "@s", "facing", Mil.Milib.LocalCoordinatesPos("^1", "^", "^"), "run", CreateE_User.Tp(Mil.Milib.RelativePos(), astext=True))
#while True:
# CreateE_User.Kill("@e[type=tnt]")
#s=CreateE_User.Data("get", "entity", "MXYYSH1")
summon_pos=[
Mil.Milib.RelativePos(95, 81, 3),
Mil.Milib.RelativePos(146, 81, 15),
Mil.Milib.RelativePos(96, 81, 38),
Mil.Milib.RelativePos(65, 81, -1),
]
# NV_NUMBER = 1000
GC_NUMBER = 10000
'''
CreateE_User.SbSpeakRaw("赛方", [{"text":"========== 本次 ", "color":"green"}, {"text":"1v300女巫大赛", "color":"red"}, {"text":" 即将开始 ==========", "color":"green"}])
time.sleep(5)
CreateE_User.SbSpeak("赛方", "请各位稍安勿躁。")
time.sleep(5)
CreateE_User.SbSpeak("赛方", "本次比赛由选手 zhui_er 和 300 只女巫进行比拼。")
time.sleep(5)
CreateE_User.SbSpeak("赛方", f"胜利后每人可获得 { GC_NUMBER } GC游戏货币用于购买游戏商店内的优质物品。")
time.sleep(6)
CreateE_User.SbSpeak("赛方", "失败后每人可获得 50 + 250 * 波数 GC游戏货币用于购买游戏商店内的优质物品。")
time.sleep(6)
CreateE_User.SbSpeak("赛方", "允许使用药水、盾牌等不允许使用飞行、作弊、挖掘、放置、TNT等明显破坏平衡性的功能。")
time.sleep(7)
CreateE_User.SbSpeak("赛方", "如果死亡不可复活。")
time.sleep(5)
CreateE_User.SbSpeak("赛方", "女巫总共有6波每波50只女巫每波会随机生成十小波每小波女巫有5只女巫间隔随机时间 0-10 秒生成,每波间隔三分钟。")
time.sleep(5)
CreateE_User.SbSpeak("赛方", "本页面程序由 CreateE 《 基于 Python 的 我的世界 RCON 核心支持库(Mil Minecraft RCON Core Library For Python》 和 其作者 TermiNexusMXYYSH1的大力支持")
time.sleep(10)
CreateE_User.SbSpeak("赛方", "我宣布,本次比赛正式开始,十秒后开始生成")
CreateE_User.Bossbar("add", "minecraft:1", '[{"text":"==","color":"red"},{"text":"====","obfuscated":true,"color":"red"},{"text":"==","color":"red"},{"text":" 1","color":"blue"},{"text":"v","color":"yellow"},{"text":"300","color":"red"},{"text":" \u5973\u5deb","color":"dark_red"},{"text":"\u5927\u8d5b","color":"dark_green"},{"text":" \u751f\u6210","color":"gold"},{"text":"\u8fdb\u5ea6","color":"green"},{"text":" ==","color":"red"},{"text":"====","obfuscated":true,"color":"red"},{"text":"==","color":"red"}]')
CreateE_User.Bossbar("set", "minecraft:1", "color", "red")
CreateE_User.Bossbar("set", "minecraft:1", "max", "300")
CreateE_User.Bossbar("set", "minecraft:1", "style", "notched_20")
CreateE_User.Bossbar("set", "minecraft:1", "players", "@a")
CreateE_User.Bossbar("set", "minecraft:1", "visible", "true")
for _ in range(10, -1, -1):
CreateE_User.SbSpeak("赛方", f"{_} 秒后开始生成")
time.sleep(1)'''
CreateE_User.Bossbar("add", "minecraft:1", '[{"text":"==","color":"red"},{"text":"====","obfuscated":true,"color":"red"},{"text":"==","color":"red"},{"text":" 1","color":"blue"},{"text":"v","color":"yellow"},{"text":"300","color":"red"},{"text":" \u5973\u5deb","color":"dark_red"},{"text":"\u5927\u8d5b","color":"dark_green"},{"text":" \u751f\u6210","color":"gold"},{"text":"\u8fdb\u5ea6","color":"green"},{"text":" ==","color":"red"},{"text":"====","obfuscated":true,"color":"red"},{"text":"==","color":"red"}]')
CreateE_User.Bossbar("set", "minecraft:1", "color", "red")
CreateE_User.Bossbar("set", "minecraft:1", "max", "300")
CreateE_User.Bossbar("set", "minecraft:1", "style", "notched_20")
CreateE_User.Bossbar("set", "minecraft:1", "players", "@a")
CreateE_User.Bossbar("set", "minecraft:1", "visible", "true")
B=1
SummonCount=(B-1)*10
for i in range(B, 6+1):
CreateE_User.SbSpeak("赛方", f"开始生成第 {i} 波女巫,请选手准备迎敌!")
CreateE_User.SetTitle("@a", f"{i} 波!", "red")
StartRandomTime=random.uniform(0.0, 2.0)
LastRandomTime=StartRandomTime + random.uniform(0, 10.0)
for _ in range(5):
RPos = random.choice(summon_pos)
CreateE_User.SbSpeak("赛方", f"有一小波女巫生成在了 {RPos}")
for _ in range(5):
CreateE_User._RunCommand(f"execute in myid:1 run summon minecraft:witch {RPos}")
SummonCount+=1
CreateE_User.Bossbar("set", "minecraft:1", "value", f"{SummonCount}")
time.sleep(random.uniform(StartRandomTime, LastRandomTime))
CreateE_User.SbSpeak("赛方", f"{i} 波女巫生成已结束,{"本次比赛已结束" if i == 20 else ("开始 300 秒 中场休息" if i == 10 else "开始 90 秒休息。")}")
time.sleep(0 if i == 20 else (270 if i == 10 else 70))
if i != 20:
CreateE_User.SbSpeak("赛方", "还有30秒。")
time.sleep(20)
CreateE_User.SbSpeak("赛方", "最后10秒做好准备")
time.sleep(10)
CreateE_User.SbSpeak("赛方", "生成已结束!请迅速解决剩余残孽。")
CreateE_User.SetTitle("@a", "生成完毕!", "green")
com=input("OK?> ")
if com == "Y":
CreateE_User.SbSpeak("赛方", "恭喜各位完成本次比赛!!!")
time.sleep(5)
CreateE_User.SbSpeak("赛方", f"诸位凭借自己的实力赢得了 {GC_NUMBER} GC")
else:
CreateE_User.SbSpeakRaw("赛方", "对不起,你们失败了!", "red")
time.sleep(5)
CreateE_User.SbSpeak("赛方", "我们下次再见!")
time.sleep(5)
CreateE_User.SbSpeak("赛方", "我正式宣布比赛结束!")
CreateE_User.disconnect()

117
Mil.py Normal file
View File

@@ -0,0 +1,117 @@
# Minecraft RCON Core Library For Python
# Version: @1.0.0
# Author: @TermiNexus
import MilRcon
import MilCon
import Milib
import typing
import json
import math
import time
class MinecraftCore():
def __init__(self, con: MilRcon._MinecraftRcon):
self.con=con
def _RunCommand(self, command, astext: bool = False):
try: return self.con._RunCommand(command, astext = astext)
except: return False
# Minecraft Command
def Tellraw(self, user: MilCon._user, j, astext: bool = False):
self._RunCommand(f"tellraw {user} {json.dumps(j, ensure_ascii=False)}", astext)
def Title(self, user: MilCon._user, mode: typing.Literal["actionbar", "clear", "reset", "subtitle", "title", "times", "title"], j, astext: bool = False):
return self._RunCommand(f"title {user} {mode} {json.dumps(j, ensure_ascii=False)}", astext)
def Gamemode(self, mode: MilCon._gamemode, user: MilCon._all_user, astext: bool = False):
return self._RunCommand(f"gamemode {mode} {user}", astext)
def Particle(self, name: MilCon._minecraft_particles, pos: Milib.RelativePos, delta: Milib.Delta, speed: int = 0, count: int = 0, show: typing.Literal["force", "normal"] = "normal", user: MilCon._user = "@a", astext: bool = False):
return self._RunCommand(f"particle {name} {pos} {delta} {speed} {count} {show} {user}", astext)
def Execute(self, *args: typing.Unpack[Milib.ExecuteSubCommandRule], astext: bool = False):
return self._RunCommand(f"execute {" ".join(map(str, args))}", astext)
def Mute(self, user: MilCon._user, mode: MilCon._mute_mode, astext: bool = False):
return self._RunCommand(f"mute {user} {mode}", astext)
def UnMute(self, user: MilCon._user, astext: bool = False):
return self._RunCommand(f"unmute {user}", astext)
def List(self, astext: bool = False):
if astext: return self._RunCommand(f"list", astext)
return self._RunCommand(f"list").split(": ")[1].split(", ")
def Weather(self, mode: MilCon._weather_mode, astext: bool = False):
return self._RunCommand(f"weather {mode}", astext)
def Gamerule(self, rule: MilCon._gamerules, value: typing.Union[bool, int, str], astext: bool = False):
return self._RunCommand(f"gamerule {rule} {Milib._Bool2Str(value)}", astext)
def Data(self, mode: typing.Literal["get", "merge", "modify", "remove"], usermode: typing.Literal["block", "entity", "storage"], user: MilCon._all_user | Milib.RelativePos, path: str = "", astext: bool = False):
_: str=self._RunCommand(f"data {mode} {usermode} {user}" + Milib._WithValue(path), astext)
if mode == "get" and (31+len(user)) < len(_) and not path:
_2=_[(32+len(user)):]
return _2
return _
def Bossbar(self, mode: typing.Literal["add", "get", "list", "remove", "set"], id: str = "", key: str = "", value: typing.Union[str, int, bool, MilCon._minecraft_colors, MilCon._user] = "", astext: bool = False):
return self._RunCommand(f"bossbar {mode}" + Milib._WithValue(id) + Milib._WithValue(key) + Milib._WithValue(value), astext)
def Tp(self, pos1: MilCon._all_user | Milib.RelativePos, pos2: MilCon._all_user | Milib.RelativePos = "", astext: bool = False):
return self._RunCommand(f"tp {pos1}" + Milib._WithValue(pos2), astext)
def Kick(self, user: MilCon._user, astext: bool = False):
return self._RunCommand(f"kick {user}", astext)
def Kill(self, user: MilCon._all_user, astext: bool = False):
return self._RunCommand(f"kill {user}", astext)
def PlaySound(self, name, mode: typing.Literal["ambient", "block", "hostile", "master", "music", "neutral", "player", "record", "voice", "weather"], value: Milib.RelativePos | int | MilCon._user = None, value2: Milib.RelativePos | int | MilCon._user = None, value3: Milib.RelativePos | int | MilCon._user = None, astext: bool = False):
return self._RunCommand(f"playsound {name} {mode}" + Milib._WithValue(value) + Milib._WithValue(value2) + Milib._WithValue(value3), astext)
# Python For Minecraft
def TellRawAll(self, j: dict | list, astext: bool = False):
return self.Tellraw("@a", j, astext)
def Speak(self, text: str, color: MilCon._minecraft_colors = "white", user: MilCon._user = "@a", astext: bool = False):
return self.Tellraw(user, {"text": text, "color": color}, astext)
def SbSpeak(self, asuser: str, text: str, color: MilCon._minecraft_colors = "white", user: MilCon._user = "@a", astext: bool = False):
return self.Tellraw(user, [{"text": f"[{asuser}] ", "color": "yellow"}, {"text": text, "color": color}], astext)
def SbSpeakRaw(self, asuser: str, j: dict | list, color: MilCon._minecraft_colors = "white", user: MilCon._user = "@a", astext: bool = False):
if type(j) == str: j={"text":j, "color":color}
if type(j) != list: j=[j]
return self.Tellraw(user, [{"text": f"[{asuser}] ", "color": "yellow"}] + j, astext)
def SetTitle(self, user: MilCon._user, text: str, color: MilCon._minecraft_colors = "white", astext: bool = False):
return self.Title(user, "title", {"text": text, "color": color}, astext)
def SetSubTitle(self, user: MilCon._user, text: str, color: MilCon._minecraft_colors = "white", astext: bool = False):
return self.Title(user, "subtitle", {"text": text, "color": color}, astext)
def PlaySoundWith(self, name, user: list[MilCon._user]):
for i in user: self.Execute("as", i, "at", "@s", "run", self.PlaySound(name, "voice", "@s", Milib.RelativePos(), 100, astext=True))
class MCROCN(MilRcon._MinecraftRcon, MinecraftCore):
def __init__(self, host, password, port, debug=False):
MilRcon._MinecraftRcon.__init__(self, host, password, port)
MinecraftCore.__init__(self, self)
self.debug=debug
def Connect(self):
try: self.connect()
except: return False
return True
def _RunCommand(self, command, astext: bool = False):
if self.debug: print("> ", command)
if astext: return Milib.Command(command)
try:
r=self.command(command)
if self.debug: print(r)
return r
except: return False
'''@typing.overload
def Bossbar(self, mode: typing.Literal["add"], id: str, name: str, astext: bool = False) -> str | bool: ...
@typing.overload
def Bossbar(self, mode: typing.Literal["get"], id: str, key: typing.Literal["max", "players", "value", "visible"], astext: bool = False) -> str | bool: ...
@typing.overload
def Bossbar(self, mode: typing.Literal["list"], astext: bool = False) -> str | bool | list: ...
@typing.overload
def Bossbar(self, mode: typing.Literal["remove"], id: str, astext: bool = False) -> str | bool: ...
@typing.overload
def Bossbar(self, mode: typing.Literal["set"], id: str, key: typing.Literal["color", "max", "name", "players", "style", "value", "visible"], value: str, astext: bool = False) -> str | bool: ...
@typing.overload
def Bossbar(self, mode: typing.Literal["set"], id: str, key: typing.Literal["color"], value: _minecraft_colors, astext: bool = False) -> str | bool: ...
@typing.overload
def Bossbar(self, mode: typing.Literal["set"], id: str, key: typing.Literal["max"], value: int, astext: bool = False) -> str | bool: ...
@typing.overload
def Bossbar(self, mode: typing.Literal["set"], id: str, key: typing.Literal["name"], value: str, astext: bool = False) -> str | bool: ...
@typing.overload
def Bossbar(self, mode: typing.Literal["set"], id: str, key: typing.Literal["players"], value: _user, astext: bool = False) -> str | bool: ...
@typing.overload
def Bossbar(self, mode: typing.Literal["set"], id: str, key: typing.Literal["style"], value: typing.Literal["notched_10", "notched_12", "notched_20", "notched_6", "progress"], astext: bool = False) -> str | bool: ...
@typing.overload
def Bossbar(self, mode: typing.Literal["set"], id: str, key: typing.Literal["value"], value: int, astext: bool = False) -> str | bool: ...
@typing.overload
def Bossbar(self, mode: typing.Literal["set"], id: str, key: typing.Literal["visible"], value: bool, astext: bool = False) -> str | bool: ...'''

229
MilCon.py Normal file
View File

@@ -0,0 +1,229 @@
import typing
_gamemode=typing.Literal["creative", "survival", "adventure", "spectator"]
_user=typing.Union[typing.Literal["@a", "@e", "@p", "@r", "@s"], str]
_all_user=typing.Union[typing.Literal["@a", "@e", "@p", "@r", "@s", "@e"], str]
_minecraft_particles = typing.Literal[
"minecraft:ambient_entity_effect",
"minecraft:angry_villager",
"minecraft:block",
"minecraft:block_marker",
"minecraft:bubble",
"minecraft:bubble_column_up",
"minecraft:bubble_pop",
"minecraft:campfire_cosy_smoke",
"minecraft:campfire_signal_smoke",
"minecraft:cherry_leaves",
"minecraft:cloud",
"minecraft:composter",
"minecraft:crimson_spore",
"minecraft:crit",
"minecraft:current_down",
"minecraft:damage_indicator",
"minecraft:dolphin",
"minecraft:dragon_breath",
"minecraft:dripping_dripstone_lava",
"minecraft:dripping_dripstone_water",
"minecraft:dripping_honey",
"minecraft:dripping_lava",
"minecraft:dripping_obsidian_tear",
"minecraft:dripping_water",
"minecraft:dust",
"minecraft:dust_color_transition",
"minecraft:effect",
"minecraft:egg_crack",
"minecraft:elder_guardian",
"minecraft:electric_spark",
"minecraft:enchant",
"minecraft:enchanted_hit",
"minecraft:end_rod",
"minecraft:entity_effect",
"minecraft:explosion",
"minecraft:explosion_emitter",
"minecraft:falling_dripstone_lava",
"minecraft:falling_dripstone_water",
"minecraft:falling_dust",
"minecraft:falling_honey",
"minecraft:falling_lava",
"minecraft:falling_nectar",
"minecraft:falling_obsidian_tear",
"minecraft:falling_spore_blossom",
"minecraft:falling_water",
"minecraft:firework",
"minecraft:fishing",
"minecraft:flame",
"minecraft:flash",
"minecraft:glow",
"minecraft:glow_squid_ink",
"minecraft:gust",
"minecraft:gust_emitter",
"minecraft:heart",
"minecraft:instant_effect",
"minecraft:item",
"minecraft:item_slime",
"minecraft:item_snowball",
"minecraft:landing_honey",
"minecraft:landing_lava",
"minecraft:landing_obsidian_tear",
"minecraft:large_smoke",
"minecraft:lava",
"minecraft:mycelium",
"minecraft:nautilus",
"minecraft:note",
"minecraft:ominous_spawning",
"minecraft:poof",
"minecraft:portal",
"minecraft:rain",
"minecraft:reverse_portal",
"minecraft:scrape",
"minecraft:sculk_charge",
"minecraft:sculk_charge_pop",
"minecraft:sculk_soul",
"minecraft:shriek",
"minecraft:slime",
"minecraft:small_flame",
"minecraft:smoke",
"minecraft:sneeze",
"minecraft:snowflake",
"minecraft:soul",
"minecraft:soul_fire_flame",
"minecraft:spit",
"minecraft:spore_blossom_air",
"minecraft:splash",
"minecraft:spore_blossom",
"minecraft:squid_ink",
"minecraft:sweep_attack",
"minecraft:totem_of_undying",
"minecraft:underwater",
"minecraft:vibration",
"minecraft:warped_spore",
"minecraft:wax_off",
"minecraft:wax_on",
"minecraft:white_ash",
"minecraft:white_smoke",
"minecraft:witch"
]
_minecraft_colors = typing.Literal[
"black",
"dark_blue",
"dark_green",
"dark_aqua",
"dark_red",
"dark_purple",
"gold",
"gray",
"dark_gray",
"blue",
"green",
"aqua",
"red",
"light_purple",
"yellow",
"white",
"brown",
"cyan",
"pink",
"reset"
]
_execute_sub_commands = typing.Literal[
"align",
"anchored",
"as",
"at",
"facing",
"facing entity",
"in",
"positioned",
"positioned as",
"positioned over",
"rotated",
"rotated as",
"if",
"if entity",
"if block",
"if blocks",
"if score",
"if predicate",
"unless",
"unless entity",
"unless block",
"unless blocks",
"unless score",
"unless predicate",
"run",
"store",
"store result",
"store success",
"summon",
"data",
"on",
"on attacker",
"on controller",
"on leasher",
"on owner",
"on passenger",
"on target",
"on vehicle"
]
_gamerules = typing.Literal[
"announceAdvancements",
"commandBlockOutput",
"disableElytraMovementCheck",
"disableRaids",
"doDaylightCycle",
"doEntityDrops",
"doFireTick",
"doInsomnia",
"doImmediateRespawn",
"doLimitedCrafting",
"doMobLoot",
"doMobSpawning",
"doPatrolSpawning",
"doTileDrops",
"doTraderSpawning",
"doVinesSpread",
"doWardenSpawning",
"doWeatherCycle",
"drowningDamage",
"fallDamage",
"fireDamage",
"forgiveDeadPlayers",
"freezeDamage",
"keepInventory",
"logAdminCommands",
"maxCommandChainLength",
"maxEntityCramming",
"mobGriefing",
"naturalRegeneration",
"playersSleepingPercentage",
"randomTickSpeed",
"reducedDebugInfo",
"sendCommandFeedback",
"showDeathMessages",
"spawnRadius",
"spectatorsGenerateChunks",
"universalAnger"
]
_mute_mode=typing.Union[
typing.Literal[
"* (indefinite)",
"10m",
"1d",
"1h",
"1w",
"5m",
"<number>[smhdw]"
],
typing.Union[
int,
typing.Literal["m", "d", "h", "w", "m"]
]
]
_weather_mode=typing.Literal["clear", "rain", "thunder"]
DurationTime=typing.Union[int, typing.Literal["d", "s", "t"]]
true="true"
false="false"

108
MilRcon.py Normal file
View File

@@ -0,0 +1,108 @@
import getpass
import argparse
import os
import socket
import ssl
import select
import struct
import time
import platform
#if platform.system() != "Windows":
# import signal
class MCRconException(Exception):
pass
def timeout_handler(signum, frame):
raise MCRconException("Connection timeout error")
class _MinecraftRcon(object):
socket = None
def __init__(self, host, password, port=25575, tlsmode=0, timeout=5):
self.host = host
self.password = password
self.port = port
self.tlsmode = tlsmode
self.timeout = timeout
#if platform.system() != "Windows":
# signal.signal(signal.SIGALRM, timeout_handler)
def __enter__(self):
self.connect()
return self
def __exit__(self, type, value, tb):
self.disconnect()
def connect(self):
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
if self.tlsmode > 0:
ctx = ssl.create_default_context()
if self.tlsmode > 1:
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
self.socket = ctx.wrap_socket(self.socket, server_hostname=self.host)
self.socket.connect((self.host, self.port))
self._send(3, self.password)
def disconnect(self):
if self.socket is not None:
self.socket.close()
self.socket = None
def _read(self, length):
#if platform.system() != "Windows": signal.alarm(self.timeout)
data = b""
while len(data) < length: data += self.socket.recv(length - len(data))
#if platform.system() != "Windows": signal.alarm(0)
return data
def _send(self, out_type, out_data):
if self.socket is None:
raise MCRconException("Must connect before sending data")
out_payload = (
struct.pack("<ii", 0, out_type) + out_data.encode("utf8") + b"\x00\x00"
)
out_length = struct.pack("<i", len(out_payload))
self.socket.send(out_length + out_payload)
in_data = ""
while True:
(in_length,) = struct.unpack("<i", self._read(4))
in_payload = self._read(in_length)
in_id, in_type = struct.unpack("<ii", in_payload[:8])
in_data_partial, in_padding = in_payload[8:-2], in_payload[-2:]
if in_padding != b"\x00\x00":
raise MCRconException("Incorrect padding")
if in_id == -1:
raise MCRconException("Login failed")
in_data += in_data_partial.decode("utf8")
if len(select.select([self.socket], [], [], 0)[0]) == 0:
return in_data
def command(self, command):
result = self._send(2, command)
#time.sleep(0.003) # MC-72390 workaround
return result
def MinecraftRconCli():
try:
parser = argparse.ArgumentParser(description="connect to and use Minecraft Server remote console protocol")
parser.add_argument("host", metavar="HOST", help="the host to connect to")
parser.add_argument("--password", metavar="PASSWORD", help="the password to connect with, default is a prompt or envvar RCON_PASSWORD.")
parser.add_argument("-p", "--port", metavar="PORT", dest="port", type=int, default=25575,help="the port to connect to")
parser.add_argument("-t", "--tls", dest="tlsmode", action="store_true", help="connect to the server with tls encryption",)
args = parser.parse_args()
if not args.password and not os.environ.get("RCON_PASSWORD"): password = getpass.getpass("Password: ")
elif os.environ.get("RCON_PASSWORD"): password = os.environ.get("RCON_PASSWORD")
else: password = args.password
try:
with _MinecraftRcon(args.host, password, args.port, args.tlsmode) as mcr:
while True:
cmd = input("> ")
if cmd.strip() == "exit": break
else:
try: print(mcr.command(cmd))
except (ConnectionResetError, ConnectionAbortedError):
print("The connection was terminated, the server may have been stopped.")
break
if cmd == "exit": break
except ConnectionRefusedError: print("The connection could not be made as the server actively refused it.")
except ConnectionError as e: print(e)
except KeyboardInterrupt: pass

256
Milib.py Normal file
View File

@@ -0,0 +1,256 @@
import MilCon
import typing
import math
class _HPos:
x: str
y: str
z: str
class RelativePos:
def __init__(self, x: str | int | float = "~", y: str | int | float = "~", z: str | int | float = "~"):
self.x: str = str(x) if isinstance(x, (int, float)) else x
self.y: str = str(y) if isinstance(y, (int, float)) else y
self.z: str = str(z) if isinstance(z, (int, float)) else z
def __str__(self):
return f"{self.x} {self.y} {self.z}"
@classmethod
def FromString(cls, s: str):
parts = s.split()
if len(parts) != 3 or not all(p.startswith('~') for p in parts): raise ValueError("Catch A Error As RelativePos ~x ~y ~z")
return cls(*parts)
def ToAbsolute(self, reference: _HPos=None):
def ParseCoord(coord: str, ref):
if coord.startswith('~'): return ref + (float(coord[1:]) if len(coord) > 1 else 0.0)
else: return float(coord)
ref_x = reference.x if reference and reference.x.startswith('~') else 0.0
ref_y = reference.y if reference and reference.y.startswith('~') else 0.0
ref_z = reference.z if reference and reference.z.startswith('~') else 0.0
abs_x = ParseCoord(self.x, ref_x)
abs_y = ParseCoord(self.y, ref_y)
abs_z = ParseCoord(self.z, ref_z)
return RelativePos(abs_x, abs_y, abs_z)
class LocalCoordinatesPos:
def __init__(self, x: str | int | float = "^", y: str | int | float = "^", z: str | int | float = "^"):
self.x: str = str(x) if isinstance(x, (int, float)) else x
self.y: str = str(y) if isinstance(y, (int, float)) else y
self.z: str = str(z) if isinstance(z, (int, float)) else z
def __str__(self):
return f"{self.x} {self.y} {self.z}"
@classmethod
def FromString(cls, s: str):
parts = s.split()
if len(parts) != 3 or not all(p.startswith('^') for p in parts): raise ValueError("Catch A Error As LocalCoordinatesPos ^x ^y ^z")
return cls(*parts)
def ToAbsolute(self, reference: _HPos=None):
def ParseCoord(coord: str, ref):
if coord.startswith('^'): return ref + (float(coord[1:]) if len(coord) > 1 else 0.0)
else: return float(coord)
ref_x = reference.x if reference and reference.x.startswith('^') else 0.0
ref_y = reference.y if reference and reference.y.startswith('^') else 0.0
ref_z = reference.z if reference and reference.z.startswith('^') else 0.0
abs_x = ParseCoord(self.x, ref_x)
abs_y = ParseCoord(self.y, ref_y)
abs_z = ParseCoord(self.z, ref_z)
return LocalCoordinatesPos(abs_x, abs_y, abs_z)
class Delta:
def __init__(self, x: int = 0, y: int = 0, z: int = 0):
self.x, self.y, self.z = x, y, z
def __str__(self):
return f"{self.x} {self.y} {self.z}"
class Command():
def __init__(self, command):
self.command = command
def __str__(self):
return self.command
class ExecuteSubCommandRule(typing.TypedDict):
mode: MilCon._execute_sub_commands
text: Command
def _Bool2Str(value: bool):
return "true" if value else "false"
def _WithValue(value: str | int):
return f" {value}" if value else ""
def _Pos1ToPos2(pos1: RelativePos, pos2: RelativePos, radios: int):
abs_pos1 = pos1.ToAbsolute()
abs_pos2 = pos2.ToAbsolute()
x1, y1, z1 = float(abs_pos1.x), float(abs_pos1.y), float(abs_pos1.z)
x2, y2, z2 = float(abs_pos2.x), float(abs_pos2.y), float(abs_pos2.z)
delta_x = (x2 - x1) / (radios + 1)
delta_y = (y2 - y1) / (radios + 1)
delta_z = (z2 - z1) / (radios + 1)
points = []
for i in range(1, radios + 1):
x = x1 + delta_x * i
y = y1 + delta_y * i
z = z1 + delta_z * i
points.append(RelativePos(x, y, z))
return points
def _Pos1ToPos2WithPoints(radios: int, radian: int, pos1: RelativePos, pos2: RelativePos, *poses: RelativePos):
# 参数验证
if radios <= len(poses) + 2:
raise ValueError("radios must be greater than len(poses) + 2")
if radian < 0:
raise ValueError("radian must be non-negative")
# 转换为绝对坐标
abs_pos1 = pos1.ToAbsolute()
abs_poses = [p.ToAbsolute() for p in poses]
abs_pos2 = pos2.ToAbsolute()
# 所有点按顺序排列
all_points = [abs_pos1] + abs_poses + [abs_pos2]
num_segments = len(all_points) - 1
# 计算每段的点数
points_per_segment = (radios - num_segments + 1) // num_segments
remainder = (radios - num_segments + 1) % num_segments
# 生成点
points = []
for i in range(num_segments):
start = all_points[i]
end = all_points[i + 1]
# 当前段的点数
current_points = points_per_segment + (1 if i < remainder else 0)
# 计算增量
delta_x = (float(end.x) - float(start.x)) / (current_points + 1)
delta_y = (float(end.y) - float(start.y)) / (current_points + 1)
delta_z = (float(end.z) - float(start.z)) / (current_points + 1)
# 生成当前段的点
for j in range(1, current_points + 1):
x = float(start.x) + delta_x * j
y = float(start.y) + delta_y * j
z = float(start.z) + delta_z * j
# 如果 radian 不为 0 且 poses 存在,则在中间点附近向外偏移
if radian != 0 and len(poses) > 0 and i < len(poses):
# 计算当前点与中间点的距离比例 (0-1)
t = j / (current_points + 1)
# 使用正弦函数生成弧形偏移 (0-π)
offset = radian * math.sin(t * math.pi)
# 计算3D垂直方向
# 获取前一个点和后一个点
prev_point = all_points[i]
next_point = all_points[i+1]
# 计算线段方向向量
direction = (
float(next_point.x) - float(prev_point.x),
float(next_point.y) - float(prev_point.y),
float(next_point.z) - float(prev_point.z)
)
# 计算垂直方向 (使用简单的垂直向量)
# 这里我们选择一个与方向向量垂直的向量
if direction[0] != 0 or direction[1] != 0:
# 如果方向向量不是纯z轴方向我们可以用叉积计算垂直向量
perpendicular = (
-direction[1],
direction[0],
0
)
else:
# 如果是纯z轴方向用x轴作为垂直方向
perpendicular = (1, 0, 0)
# 归一化垂直向量
length = math.sqrt(sum(p*p for p in perpendicular))
if length > 0:
perpendicular = (
perpendicular[0]/length,
perpendicular[1]/length,
perpendicular[2]/length
)
# 应用偏移
x += offset * perpendicular[0]
y += offset * perpendicular[1]
z += offset * perpendicular[2]
points.append(RelativePos(x, y, z))
return points
def _Pos1ToPos2DrawPi(pos1: RelativePos, pos2: RelativePos, points: int) -> typing.List[RelativePos]:
"""
Generate a list of points forming a circle with pos1 as the center,
pos2 as a point on the circumference, and return num_points including pos1 at start and end.
Args:
pos1: Center of the circle (absolute coordinates)
pos2: Point on the circumference (absolute coordinates)
num_points: Number of points to generate (including start/end point)
Returns:
List of RelativePos points forming the circle, starting and ending with pos1
"""
if points < 2:
raise ValueError("Number of points must be at least 2 (including start/end)")
# Convert positions to absolute float values
center_x = float(pos1.x)
center_y = float(pos1.y)
center_z = float(pos1.z)
point_x = float(pos2.x)
point_y = float(pos2.y)
point_z = float(pos2.z)
# Calculate radius as distance from pos1 to pos2
dx = point_x - center_x
dy = point_y - center_y
dz = point_z - center_z
radius = (dx**2 + dy**2 + dz**2) ** 0.5
# Determine the plane of the circle
# Assume the circle is in the x-z plane if dy is zero, otherwise use x-y plane
# This is a simplification and may need adjustment based on actual requirements
points = []
for i in range(points):
angle = 2 * math.pi * i / (points - 1)
# Simplified 2D circle in x-z plane (y remains constant)
x = center_x + radius * math.cos(angle)
z = center_z + radius * math.sin(angle)
y = center_y # y coordinate remains the same as center
points.append(RelativePos(x, y, z))
return points
'''def _Pos1ToPos2WithPoints(radios: int, pos1: RelativePos, pos2: RelativePos, *poses: RelativePos):
if radios <= len(poses) + 2:
raise ValueError("radios must be greater than len(poses) + 2")
abs_pos1 = pos1.ToAbsolute()
abs_poses = [p.ToAbsolute() for p in poses]
abs_pos2 = pos2.ToAbsolute()
all_points = [abs_pos1] + abs_poses + [abs_pos2]
num_segments = len(all_points) - 1
points_per_segment = (radios - num_segments + 1) // num_segments
remainder = (radios - num_segments + 1) % num_segments
points = []
for i in range(num_segments):
start = all_points[i]
end = all_points[i + 1]
current_points = points_per_segment + (1 if i < remainder else 0)
delta_x = (float(end.x) - float(start.x)) / (current_points + 1)
delta_y = (float(end.y) - float(start.y)) / (current_points + 1)
delta_z = (float(end.z) - float(start.z)) / (current_points + 1)
for j in range(1, current_points + 1):
x = float(start.x) + delta_x * j
y = float(start.y) + delta_y * j
z = float(start.z) + delta_z * j
points.append(RelativePos(x, y, z))
return points'''

174
Milib.py.txt Normal file
View File

@@ -0,0 +1,174 @@
import MilCon
import typing
import math
class _HPos:
x: str
y: str
z: str
class RelativePos:
def __init__(self, x: str | int | float = "~", y: str | int | float = "~", z: str | int | float = "~"):
self.x: str = str(x) if isinstance(x, (int, float)) else x
self.y: str = str(y) if isinstance(y, (int, float)) else y
self.z: str = str(z) if isinstance(z, (int, float)) else z
def __str__(self):
return f"{self.x} {self.y} {self.z}"
@classmethod
def FromString(cls, s: str):
parts = s.split()
if len(parts) != 3 or not all(p.startswith('~') for p in parts): raise ValueError("Catch A Error As RelativePos ~x ~y ~z")
return cls(*parts)
def ToAbsolute(self, reference: _HPos=None):
def ParseCoord(coord: str, ref):
if coord.startswith('~'): return ref + (float(coord[1:]) if len(coord) > 1 else 0.0)
else: return float(coord)
ref_x = reference.x if reference and reference.x.startswith('~') else 0.0
ref_y = reference.y if reference and reference.y.startswith('~') else 0.0
ref_z = reference.z if reference and reference.z.startswith('~') else 0.0
abs_x = ParseCoord(self.x, ref_x)
abs_y = ParseCoord(self.y, ref_y)
abs_z = ParseCoord(self.z, ref_z)
return RelativePos(abs_x, abs_y, abs_z)
class LocalCoordinatesPos:
def __init__(self, x: str | int | float = "^", y: str | int | float = "^", z: str | int | float = "^"):
self.x: str = str(x) if isinstance(x, (int, float)) else x
self.y: str = str(y) if isinstance(y, (int, float)) else y
self.z: str = str(z) if isinstance(z, (int, float)) else z
def __str__(self):
return f"{self.x} {self.y} {self.z}"
@classmethod
def FromString(cls, s: str):
parts = s.split()
if len(parts) != 3 or not all(p.startswith('^') for p in parts): raise ValueError("Catch A Error As LocalCoordinatesPos ^x ^y ^z")
return cls(*parts)
def ToAbsolute(self, reference: _HPos=None):
def ParseCoord(coord: str, ref):
if coord.startswith('^'): return ref + (float(coord[1:]) if len(coord) > 1 else 0.0)
else: return float(coord)
ref_x = reference.x if reference and reference.x.startswith('^') else 0.0
ref_y = reference.y if reference and reference.y.startswith('^') else 0.0
ref_z = reference.z if reference and reference.z.startswith('^') else 0.0
abs_x = ParseCoord(self.x, ref_x)
abs_y = ParseCoord(self.y, ref_y)
abs_z = ParseCoord(self.z, ref_z)
return LocalCoordinatesPos(abs_x, abs_y, abs_z)
class Delta:
def __init__(self, x: int = 0, y: int = 0, z: int = 0):
self.x, self.y, self.z = x, y, z
def __str__(self):
return f"{self.x} {self.y} {self.z}"
class Command():
def __init__(self, command):
self.command = command
def __str__(self):
return self.command
class ExecuteSubCommandRule(typing.TypedDict):
mode: MilCon._execute_sub_commands
text: Command
def _Bool2Str(self, value: bool):
return "true" if value else "false"
def _WithValue(self, value: str | int):
return f" {value}" if value else ""
def _Pos1ToPos2(pos1: RelativePos, pos2: RelativePos, radios: int):
abs_pos1 = pos1.ToAbsolute()
abs_pos2 = pos2.ToAbsolute()
x1, y1, z1 = abs_pos1.x, abs_pos1.y, abs_pos1.z
x2, y2, z2 = abs_pos2.x, abs_pos2.y, abs_pos2.z
delta_x = (x2 - x1) / (radios + 1)
delta_y = (y2 - y1) / (radios + 1)
delta_z = (z2 - z1) / (radios + 1)
points = []
for i in range(1, radios + 1):
x = x1 + delta_x * i
y = y1 + delta_y * i
z = z1 + delta_z * i
points.append(RelativePos(x, y, z))
return points
def _Pos1ToPos2WithPoints(radios: int, radian: int, pos1: RelativePos, pos2: RelativePos, *poses: RelativePos):
# 参数验证
if radios <= len(poses) + 2:
raise ValueError("radios must be greater than len(poses) + 2")
if radian < 0:
raise ValueError("radian must be non-negative")
# 转换为绝对坐标
abs_pos1 = pos1.ToAbsolute()
abs_poses = [p.ToAbsolute() for p in poses]
abs_pos2 = pos2.ToAbsolute()
# 所有点按顺序排列
all_points = [abs_pos1] + abs_poses + [abs_pos2]
num_segments = len(all_points) - 1
# 计算每段的点数
points_per_segment = (radios - num_segments + 1) // num_segments
remainder = (radios - num_segments + 1) % num_segments
# 生成点
points = []
for i in range(num_segments):
start = all_points[i]
end = all_points[i + 1]
# 当前段的点数
current_points = points_per_segment + (1 if i < remainder else 0)
# 计算增量
delta_x = (float(end.x) - float(start.x)) / (current_points + 1)
delta_y = (float(end.y) - float(start.y)) / (current_points + 1)
delta_z = (float(end.z) - float(start.z)) / (current_points + 1)
# 生成当前段的点
for j in range(1, current_points + 1):
x = float(start.x) + delta_x * j
y = float(start.y) + delta_y * j
z = float(start.z) + delta_z * j
# 如果 radian 不为 0 且 poses 存在,则在中间点附近向外偏移
if radian != 0 and len(poses) > 0 and i < len(poses):
# 计算当前点与中间点的距离比例
t = j / (current_points + 1)
# 使用正弦函数生成弧形偏移
offset = radian * math.sin(t * math.pi)
# 计算垂直于路径的方向(简单实现,可以改进为真正的 3D 垂直)
# 这里假设偏移方向为 (1, 1, 1) 的某个分量,实际应根据路径方向计算
x += offset * 0.577 # 0.577 ≈ 1 / sqrt(3)
y += offset * 0.577
z += offset * 0.577
points.append(RelativePos(x, y, z))
return points
'''def _Pos1ToPos2WithPoints(radios: int, pos1: RelativePos, pos2: RelativePos, *poses: RelativePos):
if radios <= len(poses) + 2:
raise ValueError("radios must be greater than len(poses) + 2")
abs_pos1 = pos1.ToAbsolute()
abs_poses = [p.ToAbsolute() for p in poses]
abs_pos2 = pos2.ToAbsolute()
all_points = [abs_pos1] + abs_poses + [abs_pos2]
num_segments = len(all_points) - 1
points_per_segment = (radios - num_segments + 1) // num_segments
remainder = (radios - num_segments + 1) % num_segments
points = []
for i in range(num_segments):
start = all_points[i]
end = all_points[i + 1]
current_points = points_per_segment + (1 if i < remainder else 0)
delta_x = (float(end.x) - float(start.x)) / (current_points + 1)
delta_y = (float(end.y) - float(start.y)) / (current_points + 1)
delta_z = (float(end.z) - float(start.z)) / (current_points + 1)
for j in range(1, current_points + 1):
x = float(start.x) + delta_x * j
y = float(start.y) + delta_y * j
z = float(start.z) + delta_z * j
points.append(RelativePos(x, y, z))
return points'''

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

16
cmdsys.py Normal file
View File

@@ -0,0 +1,16 @@
import MinecraftLibrary as mil
import time
class Mil(mil.MCROCN):
def __init__(self, host, password, port):
super().__init__(host, password, port)
mcr=Mil(host="mc.gvsds.com", password="1234567890114514", port=25566)
if not mcr.Connect(): exit()
mcr.Gamerule("sendCommandFeedback", False)
mcr.Gamemode("survival", "MXYYSH2")
mcr.disconnect()

15
test copy.py Normal file
View File

@@ -0,0 +1,15 @@
from openai import OpenAI
client = OpenAI(api_key="sk-F9OLC5dSwNYB9n8g374fA0D642984246Be6cAd2cC9B61090", base_url="https://free.v36.cm")
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "You are a helpful assistant"},
{"role": "user", "content": "你好"},
],
stream=False
)
print(response)
print(response.choices[0].message.content)

15
test.py Normal file
View File

@@ -0,0 +1,15 @@
from openai import OpenAI
client = OpenAI(api_key="sk-8a48b938f3444488ac22653d05254916", base_url="https://api.deepseek.com")
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "You are a helpful assistant"},
{"role": "user", "content": "你好"},
],
stream=False
)
print(response.choices[0].message.content)