Beispiel #1
0
        public command_result execute(color_ostream stream)
        {
            Output         tempOut;
            command_result result = base.execute <Input, Output>(stream, input, out tempOut);

            output = tempOut;
            return(result);
        }
Beispiel #2
0
        public command_result TryExecute(IDFStream stream)
        {
            Output         tempOut;
            command_result result = base.TryExecute <Input, Output>(stream, input, out tempOut);

            output = tempOut;
            return(result);
        }
Beispiel #3
0
 public command_result execute()
 {
     if (p_client == null)
     {
         return(command_result.CR_NOT_IMPLEMENTED);
     }
     else
     {
         Output         tempOut;
         command_result result = base.execute <Input, Output>(default_ostream(), input, out tempOut);
         output = tempOut;
         return(result);
     }
 }
Beispiel #4
0
        private void click_to_spawn_Click(object sender, EventArgs e)
        {
            //保存最终结果
            List <string> results = new List <string> {
            };
            //保存导出结果
            string export_result = "";

            foreach (TabPage a_item in item_tab.TabPages)
            {
                //查找物品id引用
                ComboBox item_id = a_item.Controls.Find("item_id", true)[0] as ComboBox;
                if (IsTool)
                {
                    ItemIds.Add(item_id.Text);
                }
                //查找物品数量引用
                NumericUpDown item_count = a_item.Controls.Find("item_count", true)[0] as NumericUpDown;
                //查找物品数据值引用
                NumericUpDown item_data = a_item.Controls.Find("item_data", true)[0] as NumericUpDown;
                //查找物品显示名称引用
                TextBox display_name = a_item.Controls.Find("item_name", true)[0] as TextBox;
                //查找物品简介引用
                TextBox item_lore = a_item.Controls.Find("item_lore", true)[0] as TextBox;
                //查找物品是否无法破坏
                CheckBox unbreakable = a_item.Controls.Find("unbreakable", true)[0] as CheckBox;
                //查找物品自定义标签引用
                TextBox custom_tag = a_item.Controls.Find("item_custom_tag", true)[0] as TextBox;
                //查找物品信息显示方式引用
                ComboBox display_style = a_item.Controls.Find("item_display_style", true)[0] as ComboBox;
                //查找物品uid信息引用
                TextBox item_uid = a_item.Controls.Find("item_uid", true)[0] as TextBox;
                //查找物品可放置信息引用
                ComboBox can_place = a_item.Controls.Find("can_place", true)[0] as ComboBox;
                //查找物品可破坏信息引用
                ComboBox can_destory = a_item.Controls.Find("can_destory", true)[0] as ComboBox;
                //查找附魔控件引用
                TabControl enchantment_tab = a_item.Controls.Find("item_enchantment_tab", true)[0] as TabControl;
                //查找属性控件引用
                TabControl item_attribute_tab = a_item.Controls.Find("item_attribute_tab", true)[0] as TabControl;
                //查找药水效果控件引用
                TabControl item_potion_tab = a_item.Controls.Find("item_potion_tab", true)[0] as TabControl;

                //保存物品数据
                string result = "give @p " + item_id.Text;
                //保存物品nbt
                string item_nbt_info = "";

                #region 分割lore数据
                string lore_result = "";
                if (item_lore.Text.Contains(","))
                {
                    string[] lore_array = item_lore.Text.Split(',');
                    for (int i = 0; i < lore_array.Length; i++)
                    {
                        lore_result += "\"[\\\"" + lore_array[i] + "\\\"]\",";
                    }
                }
                else
                if (item_lore.Text.Trim() != "")
                {
                    lore_result = "\"[\\\"" + item_lore.Text + "\\\"]\"";
                }
                lore_result = lore_result.TrimEnd(',');
                #endregion

                #region 合并display的数据
                string display_nbt = "display:{" + (display_name.Text.Trim() != ""? "Name :\"{\\\"text\\\":\\\"" + display_name.Text + "\\\"}\"":"") + (lore_result.Trim() != ""? (display_name.Text.Trim() != ""?",":"") + (lore_result.Trim() != ""? "Lore:[" + lore_result + "]" : "") :"") + "},";
                if (Regex.Match(display_nbt.Replace("display", ""), @"[A-z]+").ToString() == "")
                {
                    display_nbt = "";
                }
                #endregion

                #region 判断隐藏信息
                string HideInfo = "HideFlags:";
                if (display_style.SelectedIndex > 0 && display_style.SelectedIndex <= 4)
                {
                    HideInfo += display_style.SelectedIndex + "b,";
                }
                else
                if (display_style.SelectedIndex > 4)
                {
                    if (display_style.SelectedIndex != (display_style.Items.Count - 1))
                    {
                        int scale = display_style.SelectedIndex - 4;
                        HideInfo += 4 * Math.Pow(2, scale) + "b,";
                    }
                    else
                    {
                        HideInfo += "63b,";
                    }
                }
                else
                {
                    HideInfo = "";
                }
                #endregion

                #region 判断uid信息
                string uid_string = item_uid.Text.Trim() != "" ? item_uid.Text.Trim() != "" ? "UUID:" + item_uid.Text + "," : "" : "";
                #endregion

                #region 合并可放置数据和可破坏数据
                string placeon_destory = "";
                string CanPlaceOn      = "CanPlaceOn:[";
                string CanDestory      = "CanDestroy:[";
                if (can_place.Items.Count > 0)
                {
                    foreach (string item in can_place.Items)
                    {
                        CanPlaceOn += "\"minecraft:" + item + "\",";
                    }
                }
                else
                {
                    CanPlaceOn = "";
                }
                CanPlaceOn = CanPlaceOn.Trim() != ""? CanPlaceOn.TrimEnd(',') + "]," :"";
                if (can_destory.Items.Count > 0)
                {
                    foreach (string item in can_destory.Items)
                    {
                        CanDestory += "\"minecraft:" + item + "\",";
                    }
                }
                else
                {
                    CanDestory = "";
                }
                CanDestory      = CanDestory.Trim() != ""? CanDestory.TrimEnd(',') + "]," :"";
                placeon_destory = CanPlaceOn + CanDestory;
                if (!Regex.Match(placeon_destory, @"[A-z]+").Success)
                {
                    placeon_destory = "";
                }
                #endregion

                #region 合并附魔数据
                string        enchantment_info = "";
                List <string> enchant_ele      = new List <string> {
                };
                foreach (TabPage enchant in enchantment_tab.TabPages)
                {
                    ComboBox      enchant_id    = enchant.Controls.Find("enchantment_id", true)[0] as ComboBox;
                    NumericUpDown enchant_level = enchant.Controls.Find("enchantment_level", true)[0] as NumericUpDown;
                    if (version1_12.Checked && enchant_id.Text.Trim() != "")
                    {
                        enchant_ele.Add("{id:" + Regex.Match(enchant_id.Text, @"\d+").ToString() + ",lvl:" + enchant_level.Value + "s},");
                    }
                    else
                    if (version1_13.Checked && enchant_id.Text.Trim() != "")
                    {
                        enchant_ele.Add("{id:\"" + enchant_id.Text + "\",lvl:" + enchant_level.Value + "s},");
                    }
                }
                foreach (string item in enchant_ele)
                {
                    enchantment_info += item;
                }
                if (version1_12.Checked && enchantment_info.Trim() != "")
                {
                    enchantment_info = "ench:[" + enchantment_info.TrimEnd(',') + "],";
                }
                else
                if (version1_13.Checked && enchantment_info.Trim() != "")
                {
                    enchantment_info = "Enchantments:[" + enchantment_info.TrimEnd(',') + "],";
                }
                #endregion

                #region 合并属性数据
                string        attribute_info = "";
                List <string> attribute_ele  = new List <string> {
                };
                Random random_uid            = new Random();
                foreach (TabPage attri in item_attribute_tab.TabPages)
                {
                    ComboBox attri_id            = attri.Controls.Find("attribute_id", true)[0] as ComboBox;
                    TextBox  attri_name          = attri.Controls.Find("attribute_name", true)[0] as TextBox;
                    TextBox  attribute_value     = attri.Controls.Find("attribute_value", true)[0] as TextBox;
                    ComboBox attribute_operation = attri.Controls.Find("attribute_operation", true)[0] as ComboBox;
                    ComboBox attribute_slot      = attri.Controls.Find("attribute_slot", true)[0] as ComboBox;
                    if (attri_id.Text.Trim() != "")
                    {
                        attribute_ele.Add("{AttributeName:\"generic." + attri_id.Text + "\",Name:\"" + attri_name.Text + "\",Amount:" + attribute_value.Text + "d,Operation:" + attribute_operation.SelectedIndex + ",UUIDMost:" + UuidHelper.NewUuidString() + "L,UUIDLeast:" + UuidHelper.NewUuidString() + "L,UUID:[I;" + random_uid.Next(1, 99) + random_uid.Next(1, 99) + "," + random_uid.Next(1, 99) + random_uid.Next(1, 99) + "," + random_uid.Next(1, 99) + random_uid.Next(1, 99) + "," + random_uid.Next(1, 99) + random_uid.Next(1, 99) + "]" + (attribute_slot.Text.Trim() != ""? ",Slot:" + Regex.Match(attribute_slot.Text, @"[A-z]+") : "") + "},");
                    }
                }
                foreach (string item in attribute_ele)
                {
                    attribute_info += item;
                }
                attribute_info = attribute_info.Trim() != ""? "AttributeModifiers:[" + attribute_info.TrimEnd(',') + "]," :"";
                #endregion

                #region 合并药水数据
                string        potion_info = "";
                List <string> potion_ele  = new List <string> {
                };
                foreach (TabPage a_potion in item_potion_tab.TabPages)
                {
                    ComboBox      potion_id        = a_potion.Controls.Find("potion_id", true)[0] as ComboBox;
                    NumericUpDown potion_second    = a_potion.Controls.Find("potioin_second", true)[0] as NumericUpDown;
                    NumericUpDown potion_amplifier = a_potion.Controls.Find("potion_amplifier", true)[0] as NumericUpDown;
                    if (potion_id.Text.Trim() != "")
                    {
                        potion_ele.Add("{Id:" + (potion_id.SelectedIndex + 1) + "b,Duration:" + (potion_second.Value * 20) + ",Amplifier:" + potion_amplifier.Value + "b,ShowParticles:0b},");
                    }
                }
                foreach (string item in potion_ele)
                {
                    potion_info += item;
                }
                potion_info = potion_info.Trim() != ""? "CustomPotionEffects:[" + potion_info.TrimEnd(',') + "]" :"";
                #endregion

                item_nbt_info = (unbreakable.Checked?"Unbreakable:1b,":"") + display_nbt + HideInfo + uid_string + placeon_destory + enchantment_info + attribute_info + potion_info;

                if (Export)
                {
                    export_result += "{id:\"" + item_id.Text.Trim() + "\",Count:" + item_count.Value + "b" + (custom_tag.Text.Trim() != "" ? Regex.Match(custom_tag.Text.Trim(), @"(*.)").ToString() : "") + (item_nbt_info.Trim() != "" ? ",tag:{" + (item_data.Value != 0 ? "Damage:" + item_data.Value + "," : "") + item_nbt_info.TrimEnd(',') + "}" : "") + "},";
                }

                if (IsTool)
                {
                    ItemIds.Add(item_id.Text.Trim());
                    if (ItemNBTs.Count > 0)
                    {
                        ItemNBTs.Clear();
                    }
                    ItemNBTs.Add("{id:\"" + item_id.Text.Trim() + "\",Count:" + item_count.Value + "b" + (custom_tag.Text.Trim() != ""?Regex.Match(custom_tag.Text.Trim(), @"(*.)").ToString():"") + (item_nbt_info.Trim() != "" ? ",tag:{" + (item_data.Value != 0 ? "Damage:" + item_data.Value + "," : "") + item_nbt_info.TrimEnd(',') + "}" : "") + "}");
                }
                else
                {
                    if (version1_12.Checked)
                    {
                        results.Add(result + " " + item_count.Value + item_data.Value + (item_nbt_info.Trim() != "" ? " {" + (custom_tag.Text.Trim() != "" ? Regex.Match(custom_tag.Text.Trim(), @"(.*)").ToString() : "") + item_nbt_info + "}" : ""));
                    }
                    if (version1_13.Checked)
                    {
                        results.Add(result + "{" + (custom_tag.Text.Trim() != "" ? Regex.Match(custom_tag.Text.Trim(), @"(.*)").ToString() : "") + (item_nbt_info.Trim() != "" ? item_nbt_info.TrimEnd(',') + (item_data.Value != 0 ? ",Damage:" + item_data.Value : "") : "") + "} " + item_count.Value);
                    }
                    results[results.Count - 1] = results[results.Count - 1].Replace("{}", "");
                }
            }

            if (Export)
            {
                export_result = export_result.TrimEnd(',');
                Clipboard.SetText(export_result);
                MessageBox.Show("所有物品已导出至剪切板");
                return;
            }

            #region 生成指令
            if (!IsTool)
            {
                command_result cmd_result = new command_result("物品指令", results);
                cmd_result.Show();
            }
            else
            {
                DialogResult = DialogResult.OK;
            }
            #endregion
        }
Beispiel #5
0
        private void click_to_spawn_Click(object sender, EventArgs e)
        {
            //保存最终结果
            List <string> results = new List <string> {
            };

            foreach (TabPage villager_page in villager_tab.TabPages)
            {
                //保存职业
                ComboBox villager_professional = villager_page.Controls.Find("villager_professional", true)[0] as ComboBox;
                //保存类型
                ComboBox villager_type_box = villager_page.Controls.Find("villager_type_box", true)[0] as ComboBox;
                //交易等级
                ComboBox transaction_level_box = villager_page.Controls.Find("transaction_level_box", true)[0] as ComboBox;
                //当前经验值
                NumericUpDown exp_box = villager_page.Controls.Find("exp_box", true)[0] as NumericUpDown;
                //版本信息
                ComboBox version_box = villager_page.Controls.Find("version_box", true)[0] as ComboBox;

                #region 保存UID列表
                string   Gossips        = "";
                ListView speech_btn_box = villager_page.Controls.Find("speech_btn_box", true)[0] as ListView;
                foreach (Button item in speech_btn_box.Controls)
                {
                    if (item.Tag != null && item.Tag.ToString().Trim() != "")
                    {
                        Gossips += item.Tag.ToString();
                    }
                }
                Gossips = Gossips.Trim() != ""?(Gossips.Trim() != "" ? "Gossips:[" + Gossips.TrimEnd(',') + "]," : "") :"";
                #endregion

                #region 保存站点列表
                string   Brain          = "";
                ListView memory_btn_box = villager_page.Controls.Find("memory_btn_box", true)[0] as ListView;
                foreach (Button item in memory_btn_box.Controls)
                {
                    if (item.Tag != null && item.Tag.ToString().Trim() != "")
                    {
                        Brain += item.Tag.ToString();
                    }
                }
                Brain = Brain.Trim() != ""? "Brain:{memories:{" + Brain.TrimEnd(',') + "}}," : "";
                #endregion

                #region 保存所有交易数据
                //交易标签页引用
                TabControl transaction_tab = villager_page.Controls.Find("transaction_tab", true)[0] as TabControl;


                string        transaction_string = "";
                List <string> transaction_item   = new List <string> {
                };
                foreach (TabPage a_transaction in transaction_tab.TabPages)
                {
                    Button buy  = a_transaction.Controls.Find("set_item1", true)[0] as Button;
                    Button buyB = a_transaction.Controls.Find("set_item2", true)[0] as Button;
                    Button sell = a_transaction.Controls.Find("set_item3", true)[0] as Button;

                    NumericUpDown xp_box              = a_transaction.Controls.Find("xp_box", true)[0] as NumericUpDown;
                    NumericUpDown uses_box            = a_transaction.Controls.Find("uses_box", true)[0] as NumericUpDown;
                    NumericUpDown maxUses_box         = a_transaction.Controls.Find("maxUses_box", true)[0] as NumericUpDown;
                    NumericUpDown demand_box          = a_transaction.Controls.Find("demand_box", true)[0] as NumericUpDown;
                    NumericUpDown specialPrice_box    = a_transaction.Controls.Find("specialPrice_box", true)[0] as NumericUpDown;
                    TextBox       priceMultiplier_box = a_transaction.Controls.Find("priceMultiplier_box", true)[0] as TextBox;
                    CheckBox      rewardExp           = a_transaction.Controls.Find("rewardExp", true)[0] as CheckBox;

                    #region 合并物品数据
                    string transaction_result = "{" + (rewardExp.Checked ? "rewardExp:true," : "") + (xp_box.Value != -1 ? "xp:" + xp_box.Value + "," : "") + (uses_box.Value != -1 ? "uses:" + uses_box.Value + "," : "") + (maxUses_box.Value != -1 ? "maxUses:" + maxUses_box.Value + "," : "") + (demand_box.Value != -1 ? "demand:" + demand_box.Value + "," : "") + (priceMultiplier_box.Text.Trim() != "" ? "priceMultiplier:" + priceMultiplier_box.Text.Trim() + "," : "") + (specialPrice_box.Value != -1 ? "specialPrice:" + specialPrice_box.Value + "," : "") + (buy.Tag != null && buy.Tag.ToString().Trim() != ""?"buy:" + buy.Tag.ToString() + ",":"") + (buyB.Tag != null && buyB.Tag.ToString().Trim() != "" ? "buyB:" + buyB.Tag.ToString() + "," : "") + (sell.Tag != null && sell.Tag.ToString().Trim() != "" ? "sell:" + sell.Tag.ToString() + "," : "");

                    transaction_item.Add(transaction_result.TrimEnd(',') + "},");
                    #endregion
                }


                foreach (string item in transaction_item)
                {
                    transaction_string += item;
                }
                transaction_string = transaction_string.Trim() != "" ? "Offers:{Recipes:[" + transaction_string.TrimEnd(',') + "]}," : "";
                #endregion

                string ProfessionInfo = villager_professional.Text.Trim() != "" ? (version_box.SelectedIndex == 0?"P":"p") + "rofession:\"" + (version_box.SelectedIndex == 0?villager_type_box.Text.Trim(): villager_professional.Text.Trim()) + "\"," : "";

                string TypeInfo = villager_type_box.Text.Trim() != "" && version_box.SelectedIndex == 1 ?"type:\"" + villager_type_box.Text.Trim() + "\",":"";

                string LevelInfo = transaction_level_box.Text.Trim() != "" ?"level:" + transaction_level_box.Text.Trim() + ",":"";

                string VillagerData = ProfessionInfo.Trim() != "" || TypeInfo.Trim() != "" || LevelInfo.Trim() != ""? (version_box.SelectedIndex == 1 ? "VillagerData:{" : "") + ProfessionInfo + TypeInfo + LevelInfo : "";
                VillagerData = VillagerData.Trim() != ""? (version_box.SelectedIndex == 1 ? VillagerData.TrimEnd(',') + "}," : VillagerData) : "";

                string result = "/summon villager ~ ~1 ~ {" + VillagerData + transaction_string + Gossips + Brain + (exp_box.Value != -1 ? "Xp:" + exp_box.Value + "," : "");
                result = result.Trim(',') + "}";
                results.Add(result);
            }

            #region 生成命令
            command_result cmd_result = new command_result("村民指令", results);
            cmd_result.Show();
            #endregion
        }
Beispiel #6
0
        private void click_to_spawn_Click(object sender, EventArgs e)
        {
            StartSpawn(nbt_view.Nodes[0]);
            if (result.Trim() != "[")
            {
                result = nbt_view.Nodes[0].Text + ":" + result + "],";
            }
            else
            {
                result = "";
            }

            #region 合并生成数据
            string spawn_data = "";
            if (SetSpawnData.Tag != null)
            {
                spawn_data = "SpawnData:" + SetSpawnData.Tag.ToString() + ",";
            }
            #endregion

            #region 合并生成数量数据
            string spawn_count = "";
            spawn_count = "SpawnCount:" + SpawnCountBox.Value + "s,";
            #endregion

            #region 合并生成半径数据
            string spawn_range = "";
            spawn_range = "SpawnRange:" + SpawnRangeBox.Value + "s,";
            #endregion

            #region 合并延迟数据
            string delayInfo = "";
            delayInfo = "Delay:" + DelayBox.Value + "s,";
            #endregion

            #region 合并最小生成延迟数据
            string minspawndelay = "";
            minspawndelay = "MinSpawnDelay:" + MinSpawnDelayBox.Value + "s,";
            #endregion

            #region 合并最大生成延迟数据
            string maxspawndelay = "";
            maxspawndelay = "MaxSpawnDelay:" + MaxSpawnDelayBox.Value + "s,";
            #endregion

            #region 合并所需玩家距离数据
            string playerrange = "";
            playerrange = "RequiredPlayerRange:" + RequiredPlayerRangeBox.Value + "s,";
            #endregion

            #region 合并附近最大实体数量
            string maxentitycount = "";
            maxentitycount = "MaxNearbyEntities:" + MaxNearbyEntitiesBox.Value + "s,";
            #endregion

            #region 合并最终结果
            string nbt_data = spawn_data + spawn_count + spawn_range + delayInfo + minspawndelay + maxspawndelay + playerrange + maxentitycount;
            if (nbt_data.Trim() != "")
            {
                nbt_data = nbt_data.Trim(',');
            }
            result = "/setblock ~ ~1 ~ spawner{" + result + nbt_data + "}";
            #endregion

            #region 生成指令
            List <string> spawnerList = new List <string> {
                result
            };
            command_result cr = new command_result("刷怪笼指令", spawnerList);
            cr.Show();
            result = "[";
            #endregion
        }
Beispiel #7
0
        private void Click_to_spawn_Click(object sender, EventArgs e)
        {
            //保存所有技能
            List <string> skill_result = new List <string> {
            };

            foreach (TabPage skill_page in skill_tab.TabPages)
            {
                //保存生成结果
                string a_skill_result = "";
                //搜索标签页中的数据表
                TableLayoutPanel skill_table = skill_page.Controls.Find("skill_info_table", false)[0] as TableLayoutPanel;

                #region 处理条件数据
                //获取表中第一行第二列的自定义控件,这个自定义控件的子级放置了该条件所有的参数
                UserControl parameter_control = skill_table.GetControlFromPosition(1, 0) as UserControl;
                string      current_version   = version1_12.Checked ?"1.12":"1.13";
                var         conditions_obj    = Activator.CreateInstance(manager);

                //标签页文本数字与标签页Tag数据中的数字相加的结果减1为调用方法的索引
                int condition_index       = int.Parse(Regex.Match(skill_page.Text, @"[\d]+").ToString());
                int condition_start_index = int.Parse(skill_page.Tag.ToString());

                List <string> condition_data = skill_methods[condition_index + condition_start_index - 1].Invoke(conditions_obj, new object[] { parameter_control, current_version }) as List <string>;
                //遍历条件和事件的结果,合并字符串
                for (int i = 1; i < condition_data.Count; i++)
                {
                    a_skill_result += condition_data[i] + "\r\n";
                }
                string target_para = condition_data[0];
                #endregion

                #region 处理事件数据
                //搜索数据包第二行第二列的TabControl控件
                TabControl event_tab;
                Control[]  event_area = skill_table.Controls.Find("event_tab", true);
                if (event_area.Length == 0)
                {
                    continue;
                }
                else
                {
                    event_tab = event_area[0] as TabControl;
                }

                //存储事件数据
                List <string> event_data = new List <string> {
                };
                //遍历event_tab中的标签页
                foreach (TabPage page in event_tab.TabPages)
                {
                    int event_index       = int.Parse(Regex.Match(page.Text, @"[\d]+").ToString());
                    int event_start_index = int.Parse(page.Tag.ToString());
                    //搜索标签页中的自定义控件
                    foreach (Control ctl in page.Controls)
                    {
                        if (ctl is UserControl)
                        {
                            //调用对应的方法
                            //方法索引=标签页索引+标签页Tag数字数据-1
                            List <string> event_result = skill_methods[event_index + event_start_index - 1].Invoke(conditions_obj, new object[] { ctl, target_para, current_version }) as List <string>;
                            foreach (string a_event in event_result)
                            {
                                a_skill_result += a_event + "\r\n";
                            }
                            //添加一个技能
                        }
                    }
                }
                #endregion
                skill_result.Add(a_skill_result);
            }
            #region 生成技能指令
            command_result cmd_result = new command_result("技能指令", skill_result);
            cmd_result.Show();
            #endregion
        }
Beispiel #8
0
        private void click_to_spawn_Click(object sender, EventArgs e)
        {
            List <string> results = new List <string> {
            };

            foreach (TabPage a_firework in firework_tab.TabPages)
            {
                //获取生成模式
                CheckBox give_model   = firework_tab.SelectedTab.Controls.Find("give_model", true)[0] as CheckBox;
                CheckBox summon_model = firework_tab.SelectedTab.Controls.Find("summon_model", true)[0] as CheckBox;

                //随机颜色数量
                NumericUpDown color_count      = firework_tab.SelectedTab.Controls.Find("color_count", true)[0] as NumericUpDown;
                NumericUpDown fade_color_count = firework_tab.SelectedTab.Controls.Find("fade_color_count", true)[0] as NumericUpDown;

                //颜色列表
                ComboBox color_list      = firework_tab.SelectedTab.Controls.Find("color_list", true)[0] as ComboBox;
                ComboBox fade_color_list = firework_tab.SelectedTab.Controls.Find("fade_color_list", true)[0] as ComboBox;

                //形状列表
                CheckedListBox shape_box = firework_tab.SelectedTab.Controls.Find("shape_box", true)[0] as CheckedListBox;
                for (int i = 0; i < shape_box.Items.Count; i++)
                {
                    if (shape_box.GetItemChecked(i))
                    {
                        shape_box.SelectedIndex = i;
                        break;
                    }
                }

                //闪烁和拖尾
                CheckBox twinkle         = firework_tab.SelectedTab.Controls.Find("twinkle", true)[0] as CheckBox;
                CheckBox Procrastination = firework_tab.SelectedTab.Controls.Find("Procrastination", true)[0] as CheckBox;

                //飞行时长
                ComboBox duration_box = firework_tab.SelectedTab.Controls.Find("duration_box", true)[0] as ComboBox;

                //是否按角度射出
                CheckBox shotAtAngle_box = firework_tab.SelectedTab.Controls.Find("shotAtAngle_box", true)[0] as CheckBox;

                //合并颜色数据
                string color_data = "";
                foreach (string item in color_list.Items)
                {
                    color_data += item + ",";
                }
                string fade_color_data = "";
                foreach (string item in fade_color_list.Items)
                {
                    fade_color_data += item + ",";
                }
                Random random = new Random();

                //创建随机颜色
                if (color_count.Enabled)
                {
                    for (int i = 0; i < color_count.Value; i++)
                    {
                        string front = random.Next(0, 10000).ToString();
                        string back  = random.Next(0, 10000).ToString();
                        color_data += front + back + ",";
                    }
                }
                if (fade_color_count.Enabled)
                {
                    for (int i = 0; i < fade_color_count.Value; i++)
                    {
                        string front = random.Next(0, 10000).ToString();
                        string back  = random.Next(0, 10000).ToString();
                        fade_color_data += front + back + ",";
                    }
                }
                color_data      = color_data.TrimEnd(',');
                fade_color_data = fade_color_data.TrimEnd(',');

                if (give_model.Checked)
                {
                    results.Add("/give @p firework_rocket{Fireworks:{Explosions:[{Type:" + shape_box.SelectedIndex + (twinkle.Checked? ",Flicker:1" :"") + (Procrastination.Checked? ",Trail:1" : "") + ",Colors:[I;" + color_data + "],FadeColors:[I;" + fade_color_data + "]}],Flight:" + duration_box.Text + "}}\r\n");
                }

                if (summon_model.Checked)
                {
                    results.Add("/summon firework_rocket ~ ~ ~ {LifeTime:20" + (shotAtAngle_box.Checked? ",ShotAtAngle:true" : "") + ",FireworksItem:{id:firework_rocket,Count:1b,tag:{Fireworks:{Explosions:[{Type:" + shape_box.SelectedIndex + (twinkle.Checked? ",Flicker:1" : "") + (Procrastination.Checked? ",Trail:1" : "") + ",Colors:[I;" + color_data + "],FadeColors:[I;" + fade_color_data + "]}],Flight:" + duration_box.Text + "}}}}\r\n");
                }
            }

            #region 生成命令
            command_result cmd_result = new command_result("烟花火箭命令", results);
            cmd_result.Show();
            #endregion
        }
Beispiel #9
0
        private void Click_to_spawn_Click(object sender, EventArgs e)
        {
            //保存成书标题
            string title_value = title_box.Text;
            //保存成书作者名
            string author_value = auchor_box.Text;
            //保存每一页的数据
            List <string> page_info = new List <string> {
            };

            #region 遍历每一页
            foreach (TabPage a_page in page_tab.TabPages)
            {
                //搜索句子控件的引用
                TabControl sentence_tab = a_page.Controls.Find("sentence_page", true)[0] as TabControl;
                //保存每一句的数据
                List <string> sentence_info = new List <string> {
                };
                foreach (TabPage a_sen in sentence_tab.TabPages)
                {
                    //搜索内容文本框的引用
                    TextBox content_text_box = a_sen.Controls.Find("sentence_content", true)[0] as TextBox;
                    //搜索字体样式控件的引用
                    CheckedListBox font_style = a_sen.Controls.Find("font_property_box", true)[0] as CheckedListBox;
                    //搜索字体颜色控件的引用
                    CheckedListBox font_color = a_sen.Controls.Find("font_color_box", true)[0] as CheckedListBox;
                    //保存字体样式信息
                    string font_style_string = "";
                    //保存字体颜色信息
                    string font_color_string = font_color.CheckedItems.Count > 0? ",\\\"color\\\":" + "\\\"" + font_color.CheckedItems[0].ToString() + "\\\"" :"";
                    //遍历样式控件成员,合并字符串
                    foreach (string item in font_style.CheckedItems)
                    {
                        font_style_string += ",\\\"" + item + "\\\"" + ":true";
                    }
                    //合并样式信息
                    string style_string = font_style_string.Trim() != "" || font_color_string.Trim() != ""? font_style_string + font_color_string :"";

                    //搜索字体标签页控件
                    TabControl property_tab = a_sen.Controls.Find("sentence_property_tab", true)[0] as TabControl;
                    string     event_string = "";
                    if (property_tab.SelectedIndex != 0)
                    {
                        event_string = SpawnEvent(property_tab.SelectedTab);
                    }
                    sentence_info.Add((sentence_tab.TabPages.IndexOf(a_sen) == 0?"\\\"\\\",":"") + "{\\\"text\\\":\\\"" + Regex.Match(content_text_box.Text, @"(.*)").ToString() + "\\\"" + style_string + event_string + "},");
                }
                sentence_info[sentence_info.Count - 1] = sentence_info[sentence_info.Count - 1].TrimEnd(',');
                string sentences = "";
                foreach (string a_sen in sentence_info)
                {
                    sentences += a_sen;
                }
                page_info.Add("\"[" + sentences + "]\",");
            }

            #region 生成成书
            string         result;
            command_result wb_result;
            if (version1_12.Checked)
            {
                result = "/give @p minecraft:written_book 1 0 ";
                string page_string = "";
                foreach (string item in page_info)
                {
                    page_string += item;
                }
                page_string = page_string.TrimEnd(',');
                string nbt_string = "{title:\"" + title_value + "\",author:\"" + author_value + "\",pages:[" + page_string + "]}";
                result   += nbt_string;
                wb_result = new command_result("成书命令", new List <string> {
                    result
                });
                wb_result.Show();
            }
            if (version1_13.Checked)
            {
                result = "/give @p minecraft:written_book";
                string page_string = "";
                foreach (string item in page_info)
                {
                    page_string += item;
                }
                page_string = page_string.TrimEnd(',');
                string nbt_string = "{title:\"" + title_value + "\",author:\"" + author_value + "\",pages:[" + page_string + "]}";
                result   += nbt_string;
                wb_result = new command_result("成书命令", new List <string> {
                    result
                });
                wb_result.Show();
            }
            #endregion

            #endregion
        }
Beispiel #10
0
        private void click_to_spawn_Click(object sender, EventArgs e)
        {
            //保存最终结果
            List <string> results = new List <string> {
            };
            //保存导出的数据
            string export_result = "";

            foreach (TabPage entity_page in entity_tab.TabPages)
            {
                //实体ID
                ComboBox entity_id = entity_page.Controls.Find("entity_id", true)[0] as ComboBox;
                //生成模式
                ComboBox spawn_model = entity_page.Controls.Find("spawn_model", true)[0] as ComboBox;
                //布尔值类型NBT集合
                CheckedListBox base_nbt_list = entity_page.Controls.Find("base_nbt_list", true)[0] as CheckedListBox;
                //特殊NBT值
                Button set_check_special_nbt = entity_page.Controls.Find("set_check_special_nbt", true)[0] as Button;
                string special_nbt           = "";
                if (set_check_special_nbt.Tag != null && set_check_special_nbt.Tag.ToString().Trim() != "")
                {
                    special_nbt = set_check_special_nbt.Tag.ToString() + ",";
                }
                //控件表
                TableLayoutPanel entity_table = entity_page.Controls.Find("entity_table", true)[0] as TableLayoutPanel;
                //实体基本NBT列表
                List <Control> EntityBaseNBT = new List <Control> {
                };
                foreach (Control item in entity_table.Controls)
                {
                    if (item is NumericUpDown)
                    {
                        EntityBaseNBT.Add(item);
                    }
                    if (item is TextBox)
                    {
                        EntityBaseNBT.Add(item);
                    }
                }

                //搜索药水效果集合控件引用
                TabControl effect_tab = entity_page.Controls.Find("effect_tab", true)[0] as TabControl;
                //左手物品数据
                Button LhandItem_btn = entity_page.Controls.Find("LhandItem_btn", true)[0] as Button;
                //右手物品数据
                Button RhandItem_btn = entity_page.Controls.Find("RhandItem_btn", true)[0] as Button;
                //头部物品数据
                Button HeadItemBox = entity_page.Controls.Find("HeadItemBox", true)[0] as Button;
                //胸部物品数据
                Button ChestItemBox = entity_page.Controls.Find("ChestItemBox", true)[0] as Button;
                //腿部物品数据
                Button LegItemBox = entity_page.Controls.Find("LegItemBox", true)[0] as Button;
                //脚部物品数据
                Button FeetItemBox = entity_page.Controls.Find("FeetItemBox", true)[0] as Button;
                //左手物品掉率
                TextBox Lhand_chance_box = entity_page.Controls.Find("Lhand_chance_box", true)[0] as TextBox;
                //右手物品掉率
                TextBox Rhand_chance_box = entity_page.Controls.Find("Rhand_chance_box", true)[0] as TextBox;
                //头部物品掉率
                TextBox HeadItemChance_box = entity_page.Controls.Find("HeadItemChance_box", true)[0] as TextBox;
                //胸部物品掉率
                TextBox ChestItemChance_box = entity_page.Controls.Find("ChestItemChance_box", true)[0] as TextBox;
                //腿部物品掉率
                TextBox LegItemChance_box = entity_page.Controls.Find("LegItemChance_box", true)[0] as TextBox;
                //脚部物品掉率
                TextBox FeetItemChance_box = entity_page.Controls.Find("FeetItemChance_box", true)[0] as TextBox;

                //骑乘实体集合控件引用
                TabControl passengerTab = entity_page.Controls.Find("passengerTab", true)[0] as TabControl;

                #region 合并药水效果数据
                string effect_string = "";
                foreach (TabPage item in effect_tab.TabPages)
                {
                    //效果id
                    ComboBox effect_id_box = item.Controls.Find("effect_id_box", true)[0] as ComboBox;
                    if (!effect_id_box.Text.Contains("minecraft:") && effect_id_box.Text.Trim() != "")
                    {
                        effect_id_box.Text          = "minecraft:" + effect_id_box.Text;
                        effect_id_box.SelectedIndex = effect_id_box.FindString(effect_id_box.Text.Trim());
                    }
                    //效果持续时长
                    NumericUpDown duration_box = item.Controls.Find("duration_box", true)[0] as NumericUpDown;
                    //效果等级
                    NumericUpDown amplifier_box = item.Controls.Find("amplifier_box", true)[0] as NumericUpDown;

                    effect_string += effect_id_box.Text.Trim() != ""? "{Id:" + (effect_id_box.SelectedIndex + 1) + "b,Duration:" + duration_box.Value + ",Amplifier:" + amplifier_box.Value + "b,Ambient:0b,ShowParticles:0b}," :"";
                }
                effect_string = effect_string.Trim() != ""? "ActiveEffects:[" + effect_string.TrimEnd(',') + "]," : "";
                #endregion

                #region 合并骑乘实体数据
                string passenger_entity_string = "";
                foreach (TabPage item in passengerTab.TabPages)
                {
                    Button this_obj = item.Controls.Find("passenger_entity_btn", true)[0] as Button;
                    if (this_obj.Tag != null && this_obj.Tag.ToString().Trim() != "")
                    {
                        passenger_entity_string += this_obj.Tag.ToString() + ",";
                    }
                }
                passenger_entity_string = passenger_entity_string.Trim() != ""? "Passengers:[" + passenger_entity_string.TrimEnd(',') + "]," : "";
                #endregion

                #region 合并手持装备数据
                string HandItem_string = (LhandItem_btn.Tag != null && LhandItem_btn.Tag.ToString().Trim() != "") || (RhandItem_btn.Tag != null && RhandItem_btn.Tag.ToString().Trim() != "")? "HandItems:[" + (LhandItem_btn.Tag != null && LhandItem_btn.Tag.ToString().Trim() != ""? LhandItem_btn.Tag.ToString() + ",": "") + (RhandItem_btn.Tag != null && RhandItem_btn.Tag.ToString().Trim() != "" ? RhandItem_btn.Tag.ToString() + "," : "") + "],":"";
                string HandItemDrop    = Lhand_chance_box.Text.Trim() != "" || Rhand_chance_box.Text.Trim() != ""? "HandDropChances:[" + (Lhand_chance_box.Text.Trim() != ""? Lhand_chance_box.Text:"0f") + "," + (Rhand_chance_box.Text.Trim() != "" ? Rhand_chance_box.Text : "0f") + "],":"";
                HandItem_string += HandItemDrop;
                #endregion

                #region 合并装备数据
                string EquipmentItem_string = (FeetItemBox.Tag != null && FeetItemBox.Tag.ToString().Trim() != "") || (LegItemBox.Tag != null && LegItemBox.Tag.ToString().Trim() != "") || (ChestItemBox.Tag != null && ChestItemBox.Tag.ToString().Trim() != "") || (HeadItemBox.Tag != null && HeadItemBox.Tag.ToString().Trim() != "") ? "ArmorItems:[" + (FeetItemBox.Tag != null && FeetItemBox.Tag.ToString().Trim() != "" ? FeetItemBox.Tag.ToString() + "," : "") + (LegItemBox.Tag != null && LegItemBox.Tag.ToString().Trim() != "" ? LegItemBox.Tag.ToString() + "," : "") + (ChestItemBox.Tag != null && ChestItemBox.Tag.ToString().Trim() != "" ? ChestItemBox.Tag.ToString() + "," : "") + (HeadItemBox.Tag != null && HeadItemBox.Tag.ToString().Trim() != "" ? HeadItemBox.Tag.ToString() : "") + "]," : "";

                string EquipmentItemDrop = FeetItemChance_box.Text.Trim() != "" || LegItemChance_box.Text.Trim() != "" || ChestItemChance_box.Text.Trim() != "" || HeadItemChance_box.Text.Trim() != "" ? "ArmorDropChances:[" + (FeetItemChance_box.Text.Trim() != "" ? FeetItemChance_box.Text : "0f") + (LegItemChance_box.Text.Trim() != "" ? LegItemChance_box.Text : "0f") + (ChestItemChance_box.Text.Trim() != "" ? ChestItemChance_box.Text : "0f") + (HeadItemChance_box.Text.Trim() != "" ? HeadItemChance_box.Text : "0f") + "],":"";
                EquipmentItem_string += EquipmentItemDrop;
                #endregion

                #region 合并基础NBT和属性
                string tags = "";
                if (EntityBaseNBT[2].Text.Trim() != "" && EntityBaseNBT[2].Text.Contains(","))
                {
                    string[] tag_list = EntityBaseNBT[2].Text.Split(',');
                    foreach (string item in tag_list)
                    {
                        tags += "\"" + item + "\",";
                    }
                    tags = tags.TrimEnd(',');
                }
                tags = tags.Trim() != "" ? "Tags:[" + tags + "]," : "";
                string CustomName = EntityBaseNBT[0].Text.Trim() != "" ? "CustomName :\"{\\\"text\\\":\\\"" + EntityBaseNBT[0].Text + "\\\"}\"," : "";
                string Team       = EntityBaseNBT[1].Text.Trim() != "" ? "Team:\"" + EntityBaseNBT[1].Text + "\"," : "";
                string Health     = (EntityBaseNBT[3] as NumericUpDown).Value != -1 ?"Heath:" + (EntityBaseNBT[3] as NumericUpDown).Value + "," :"";
                string Motion     = EntityBaseNBT[4].Text.Trim() != "" ?"Motion:[" + EntityBaseNBT[4].Text.Trim() + "],":"";
                string Fire       = (EntityBaseNBT[5] as NumericUpDown).Value != -1 ?"Fire:" + ((EntityBaseNBT[5] as NumericUpDown).Value * 20) + "s," : "";

                string maxHealth           = (EntityBaseNBT[6] as NumericUpDown).Value != -1 ?"{Base:" + (EntityBaseNBT[6] as NumericUpDown).Value + "d,Name:\"generic.maxHealth\"}," : "";
                string knockbackResistance = (EntityBaseNBT[7] as NumericUpDown).Value != -1 ? "{Base:" + (EntityBaseNBT[7] as NumericUpDown).Value + "d,Name:\"generic.knockbackResistance\"}," : "";
                string movementSpeed       = (EntityBaseNBT[8] as NumericUpDown).Value != -1 ? "{Base:" + (EntityBaseNBT[8] as NumericUpDown).Value + "d,Name:\"generic.movementSpeed\"}," : "";
                string followRange         = (EntityBaseNBT[8] as NumericUpDown).Value != -1 ? "{Base:" + (EntityBaseNBT[8] as NumericUpDown).Value + "d,Name:\"generic.followRange\"}," : "";
                string attackDamage        = (EntityBaseNBT[9] as NumericUpDown).Value != -1 ? "{Base:" + (EntityBaseNBT[9] as NumericUpDown).Value + "d,Name:\"generic.attackDamage\"}," : "";
                string attackSpeed         = (EntityBaseNBT[10] as NumericUpDown).Value != -1 ? "{Base:" + (EntityBaseNBT[10] as NumericUpDown).Value + "d,Name:\"generic.attackSpeed\"}," : "";
                string armor          = (EntityBaseNBT[11] as NumericUpDown).Value != -1 ? "{Base:" + (EntityBaseNBT[11] as NumericUpDown).Value + "d,Name:\"generic.armor\"}," : "";
                string armorToughness = (EntityBaseNBT[11] as NumericUpDown).Value != -1 ? "{Base:" + (EntityBaseNBT[11] as NumericUpDown).Value + "d,Name:\"generic.armorToughness\"}" : "";

                string Attributes = maxHealth + knockbackResistance + movementSpeed + followRange + attackDamage + attackSpeed + armor + armorToughness;
                Attributes = Attributes.Trim() != ""? "Attributes:[" + Attributes.Substring(0, Attributes.Length - 1) + "]," : "";
                #endregion

                #region 合并布尔值类型NBT
                string Bool_type_nbt = "";
                foreach (string item in base_nbt_list.CheckedItems)
                {
                    Bool_type_nbt += item + ":true,";
                }
                #endregion

                #region 合并最终结果
                string EntityBaseNBT_string = Bool_type_nbt + special_nbt + CustomName + Health + Team + tags + Motion + Fire + Attributes + effect_string + EquipmentItem_string + HandItem_string + passenger_entity_string;
                EntityBaseNBT_string = EntityBaseNBT_string.TrimEnd(',');

                if (export)
                {
                    export_result += "{id:\"" + entity_id.Text.Trim() + "\"" + (EntityBaseNBT_string.Trim() != "" ? "," + EntityBaseNBT_string.Trim() : "") + "},";
                    continue;
                }

                if (IsTool)
                {
                    EntityId.Add(entity_id.Text.Trim());
                    EntityNBT.Add("{id:\"" + entity_id.Text.Trim() + "\"" + (EntityBaseNBT_string.Trim() != ""?"," + EntityBaseNBT_string.Trim(): "") + "}");
                }

                if (spawn_model.SelectedIndex == 0)
                {
                    EntityBaseNBT_string = "summon " + entity_id.Text.Trim() + " ~ ~ ~ {" + EntityBaseNBT_string + "}";
                }
                else
                {
                    if (version1_12.Checked)
                    {
                        EntityBaseNBT_string = "give @p spawn_egg 1 0 {id:\"" + entity_id.Text.Trim() + "\"," + EntityBaseNBT_string + "}";
                    }
                    else
                    {
                        EntityBaseNBT_string = "give @p spawn_" + entity_id.Text.Trim() + "_egg{" + EntityBaseNBT_string + "} 1";
                    }
                }
                results.Add(EntityBaseNBT_string);
                #endregion
            }

            if (export)
            {
                export = false;
                Clipboard.SetText(export_result.TrimEnd(','));
                MessageBox.Show("所有实体已导出至剪切板");
                return;
            }

            #region 生成实体指令
            if (!IsTool)
            {
                command_result cmd_result = new command_result("实体指令", results);
                cmd_result.Show();
            }
            else
            {
                DialogResult = DialogResult.OK;
            }
            #endregion
        }