Mengapa ini diganti namanya? Komponen adalah nama Mojang, dan menyebutnya hanya "Teks" membuat kode seperti ini membingungkan:
public Text method_2164(int mouseX) {
if (message == null) {
return null;
}
int width = minecraft.textRenderer.getStringWidth(message.asFormattedString());
int x1 = this.width / 2 - width / 2;
int x2 = this.width / 2 + width / 2;
int x = x1;
if (mouseX < x1 || mouseX > x2) {
return null;
}
for (Text t : message) {
x += minecraft.textRenderer.getStringWidth(TextComponentUtil.getRenderChatMessage(t.asString(), false));
if (x > mouseX) {
return t;
}
}
return null;
}
Melihatnya dengan cepat, Anda mungkin berpikir bahwa message
adalah daftar teks (misalnya baris), tetapi sebenarnya, kode tersebut berulang melalui berbagai komponen message
(teks biasa, teks bergaya , link, dll.) untuk mendapatkan komponen mouse over.
Mengapa ini diganti namanya?
Saya tidak setuju dengan Component karena terlalu umum.
Saya masih menjunjung tinggi saran pemain untuk Text
karena singkat dan jelas. Selain itu, kami beralih dari istilah ambigu lainnya (misalnya Container -> Menu proposal)
Dalam contoh Anda, saya yakin mengganti nama kelas TextComponentUtil
menjadi TextRenderUtil
/ TextRenderHelper
dan metode getRenderChatMessage
menjadi handleColor
adalah solusi yang lebih baik untuk mengganti nama Text
kelas.
Komponen secara objektif menyebalkan. Kami membahas ini belasan kali. Kami tidak akan membahasnya lagi.
Kejelasan dan kegunaan harus selalu didahulukan di atas konsistensi dengan Mojang. Yang terakhir bagus untuk dimiliki, tetapi tidak pernah , dengan mengorbankan yang pertama.
Kejelasan dan kegunaan
Apakah Anda bahkan membaca masalah? Masalahnya adalah bahwa itu membingungkan.
Tidak masuk akal untuk "mengulangi teks pesan". Masuk akal untuk beralih melalui komponen pesan.
ada kebijakan (lunak) menggunakan nama Mojang di mana kita mengenalnya
kata kuncinya lembut . Jika kami memutuskan bahwa sebuah nama buruk untuk dimengerti, kami tidak akan menggunakannya.
Sejujurnya, saya pribadi juga tidak akan memilih Text
sebagai namanya. Yang mengatakan, itu jauh lebih baik daripada Component
, karena itu benar-benar menggambarkan apa yang digunakan untuk (teks) daripada menjadi nama umum untuk "sepotong sesuatu" yang tidak masuk akal di luar konteks. TextComponent
akan menjadi jalan tengah yang bagus, tapi saya rasa itu tidak akan menjadi populer mengetahui komunitas ini.
kata kuncinya lembut.
Menu adalah nama yang buruk dan Anda ingin menggunakannya. (Teks) Komponen adalah nama yang bagus dan Anda tidak ingin menggunakannya.
Bisakah Anda memberi tahu saya mana yang paling masuk akal bagi Anda?
for (Component component : message) {
for (Text text : message) {
Saya tidak pernah SEKALI menggunakan iterasi atas pesan, dan saya ragu banyak modder juga melakukannya. Saya baik-baik saja dengan TextComponent tetapi Component tidak jelas dan tidak membantu untuk 99,9% tempat orang benar- benar menggunakannya dalam mod.
Tidak masuk akal untuk "mengulangi teks pesan". Masuk akal untuk beralih melalui komponen pesan.
Iterasi melalui teks json atau teks kaya masuk akal.
for (Component component : message) {
Masalahnya adalah benda itu bukan message
; itu adalah siblings
sebagai gantinya. Teks pertama dengan semua subbagian ini dalam aliran memang merupakan keseluruhan teks dalam memori.
@Boundarybreaker Benang tidak hanya memetakan apa yang Anda gunakan.
Saya juga tidak punya masalah dengan TextComponent.
Saya suka Text dan TextComponent, tetapi Component terlalu kabur.
Benang adalah sistem untuk memahami kode Minecraft agar orang dapat membuat mod, jadi di mana dan kapan orang menggunakan kelas adalah kunci bagaimana kita harus memutuskan nama apa yang akan digunakan. Pemahaman untuk penggunaan paling umum dari sebuah kelas memiliki prioritas yang lebih tinggi daripada nama yang lebih akurat daripada nama internal Mojang.
Benang juga digunakan oleh orang-orang yang ingin memahami cara kerja kode vanilla.
Pemahaman untuk penggunaan paling umum dari sebuah kelas memiliki prioritas yang lebih tinggi daripada nama yang lebih akurat daripada nama internal Mojang.
Tentu, tapi ada nama yang melakukan keduanya: TextComponent
Pada titik ini kita benar-benar harus mempertimbangkan manfaat mengubah nama kelas ini untuk ketiga kalinya.
Argumen untuk mengubahnya:
Component
sama tidak akuratnya. Teks dapat bersarang, tidak ada dalam definisinya yang menyatakan bahwa itu harus menjadi hal yang lengkap.Argumen menentang perubahan itu:
Text
dalam konteks pengembangan reguler.Kami sudah membahas ini di Discord, jadi saya akan mengulangi saran saya:
for (Fragment fragment : message)
Dan
for (TextFragment fragment : message)
Ini sesuai dengan narasi tentang apa itu pesan. Setiap bagian Teks dapat dianggap sebagai fragmen, dan Teks apa pun dapat dipecah menjadi fragmen teks lainnya. Juga dalam bahasa, segmen teks yang bukan merupakan kalimat lengkap, jika bukan frasa, disebut "fragmen".
Fragmen juga merupakan bagian, atau bagian, pecahan. yaitu _Fragmentasi_.
Anda dapat mendengar _Fragmen_ percakapan, atau menuliskannya sebagai _fragmen_ teks. Kemudian sobek halaman dan buang _fragments._
Ini bukan berarti saya tidak suka Text
, saya baik-baik saja dengan itu. Text
memiliki semua manfaat TextFragment
dan bahkan lebih pendek. Semua hal dipertimbangkan, sama baiknya dengan TextFragment
, _definitely_ lebih baik dari TextComponent
dan _waaaaaaay_ lebih baik dari sekedar Component
. Saya tidak akan mengubahnya.
TextFragment
sedikit lebih baik daripada TextComponent
, tetapi jauh dari nama mojang sebagai Teks. Saya pikir Text
memang pilihan yang lebih baik dari keduanya.
Saya akan menamakannya TextTreeNode
karena ini adalah nama yang paling cocok dengan perilakunya.
TextTreeNode setStyle(Style var1);
Style getStyle();
TextTreeNode addChild(String string_1);
TextTreeNode addChild(TextTreeNode var1);
String getContent(); // only self
String getString(); // whole tree, overrides brigadier message api, no format
String getString(int maxLength); // whole tree, truncated result possibly
String getFormattedString(); // whole tree
List<TextTreeNode> getChildren();
Stream<TextTreeNode> streamTree();
Stream<TextTreeNode> streamCopiedTreeNodes();
Iterator<TextTreeNode> treeIterator();
TextTreeNode copy(); // copy this node
TextTreeNode formattedDeepCopy(); // copy the whole tree with style
TextTreeNode format(Consumer<Style> consumer_1); // accept the style
TextTreeNode format(Formatting... formattings_1); // mutates the node
TextTreeNode format(Formatting formatting_1); // mutates the node
static TextTreeNode formattedCopy(TextTreeNode text_1); // copy this node with style
Tetapi meskipun mereka memang merupakan simpul pohon, kami tidak memiliki kelas yang dibatasi untuk menampilkan seluruh pohon, oleh karena itu saya tetap menjunjung nama Text
.
Oke, saatnya untuk mengakhiri argumen ini. Saya berasumsi kita dapat dengan aman menutup masalah ini mengingat banyaknya penolakan dari masalah ini
@liach Banyak komentar di sini dan Discord setuju bahwa Text
bukanlah nama yang bagus. Jika bukan TextComponent
, itu harus diganti namanya menjadi sesuatu yang lain. Mungkin TextPiece
?
Bandingkan ini:
Keberatan membuat suara dalam edisi baru? Meskipun teks minecraft jelek, tetapi hanya ada satu jenis teks di minecraft, jadi saya akan mengatakan nama "teks" sudah cukup, sementara ada hal-hal seperti komponen lainnya (mis.
Komentar yang paling membantu
Saya tidak pernah SEKALI menggunakan iterasi atas pesan, dan saya ragu banyak modder juga melakukannya. Saya baik-baik saja dengan TextComponent tetapi Component tidak jelas dan tidak membantu untuk 99,9% tempat orang benar- benar menggunakannya dalam mod.