mc秒殺模組測試規(guī)則v1(Java版)
注意:本規(guī)則為自愿遵守,并非是一種對所有人的強制要求
可以在一次測試中自行選擇遵守或不遵守本規(guī)則,但要求在同一次測試中,測試雙方必須同時遵守本規(guī)則,或者同時不遵守本規(guī)則。
---------------------------------------------------------------------------------------------------------------------------
在開始討論規(guī)則之前,先對幾個概念作出定義:
針對:是在所有規(guī)則中被禁止的行為。它意味著對某一個具體的測試方唯一的特征性部分進行特別的處理(若是測試方"針對"mc,或"針對"測試方自己,則除外),或者說,一方的源代碼中涉及了另一方唯一的特征性部分,如"chaoswither.happymode = false;" "if (item.getClass().getName().startsWith("net.mcreator.supersword.")) {...}","if (mc.entityRenderer instanceof MxEntityRenderer) {...}"等都直接涉及其他具體的mod,是明顯的針對,不應出現(xiàn)。
純渲染:僅有單純的直接渲染,而無實際事物支持導致渲染出現(xiàn)可能的破綻。一般用于指渲染的、不能點重生的死亡gui,/say @e無法探測的渲染的實體,死亡時血條不抖動的渲染的hud(hud指GuiIngame/IngameGui渲染出的事物,下同)等。
注意:渲染的不一定都是純渲染的,只需要與其對應的真實事物的表現(xiàn)完全一致而毫無破綻,就可以被認為是"真實"的,而非純渲染的。特別地,在游戲畫面徹底靜止或崩壞(包括暫時的和永久的)且沒有未響應的情況下,一律歸入純渲染的范疇(包括防御)。
死亡gui:廣義地,是形如原版死亡gui一樣的gui。允許這些gui在背景顏色、字體顏色、顯示的文本上與原版不同。可以添加額外特效,但不能擋完死亡gui的某一特征。更確切地,死亡gui是:滿足"有填滿mc窗口的漸變色或純色的矩形作為背景"、"在正確位置出現(xiàn)"你死了"等被放大為正確大小的標題"、"在正確位置出現(xiàn)正常大小的死亡信息"、"在正確位置出現(xiàn)帶有'重生'等正常大小文本的正常大小的按鈕"、"在正確位置出現(xiàn)帶有'標題畫面'等正常大小文本的正常大小的按鈕"、(此處"正確""正常"等詞以mc原版正常死亡時的死亡gui為準)這些所有條件的、在mc窗口中出現(xiàn)的一種現(xiàn)象。若當前規(guī)則無特別規(guī)定,不強制要求死亡gui滿足其他的條件。
mc窗口:需要涉及此概念的測試必須在Windows 10系統(tǒng)上進行,并且測試中不得使用切換全屏(f11)。指啟動mc后創(chuàng)建的最初始窗口。不得出現(xiàn)任何窗口閃爍現(xiàn)象,否則不被認為是mc窗口。
實體:廣義地,指原版繼承自Entity類的對象,以及一切形似某一生物的事物。
生物:為行文方便,此處泛指非玩家實體和不是由人操控的玩家實體。
/say @e不顯示(或仍然顯示)該生物存在:/say @e執(zhí)行后,在玩家聊天欄中輸出的世界中的所有實體里,或者在日志中輸出的世界中的所有實體里,有(或無)該生物存在的跡象。要求/say @e必須輸出成功。不允許測試方在/say @e的結果已定后,攔截/say @e的輸出。不允許測試方用自己的/say @e覆蓋原版的/say @e。
---------------------------------------------------------------------------------------------------------------------------
注意事項:
1. 測試雙方(對,只能有兩方)在同一次測試中,必須同意同一套對應的規(guī)則,否則測試結果沒有意義,不可以根據(jù)測試現(xiàn)象得出任何結論。
2. 實踐是檢驗真理的唯一標準,沒有測試之前不可擅自下結論。
3. 最好不要對理論性原理只說不做,若沒有測試結果支持,則理論是待定的而非成立的。
4. 若無特別聲明,對于本文涉及的"血量"之類的概念,都以"在正確位置顯示的心式血條"之類的mc原生的顯示機制為準。
5. 規(guī)則間并不具有可逆關聯(lián)性。比如,在同一次測試中,不滿足其玩家死亡標準并不能說防住了,必須滿足其玩家防住標準才能得出防住了的測試結果。如果既不滿足其玩家死亡標準,也不滿足其玩家防住標準,則測試結果沒有意義,不可以根據(jù)測試現(xiàn)象得出任何結論。生物死亡標準和生物防住標準同理。碰到這種情況,可以換一種測試類型,或進行改進以滿足當前規(guī)則的所有條件。
6. 同一規(guī)則中具有同時滿足性。對于同一條規(guī)則(如"玩家死亡標準"),若無特別說明,則必須滿足其中規(guī)定的所有條件,才算通過規(guī)則。
7. 不要歪曲本規(guī)則含義,不要斷章取義。建議理解好關鍵詞,不能確定規(guī)則本意的時候,可以問我規(guī)則的本意。
8. 不得出現(xiàn)剪輯、p圖、修改視頻等偽造測試的行為,否則測試結果沒有意義,不可以根據(jù)測試現(xiàn)象得出任何結論。
9. 在規(guī)則沒有特別聲明時,若防御使得攻擊的全部成分在防御的那方都沒有執(zhí)行,則測試結果沒有意義,不可以根據(jù)測試現(xiàn)象得出任何結論。若在攻擊前防御的部分(或全部)沒有執(zhí)行,則測試結果沒有意義,不可以根據(jù)測試現(xiàn)象得出任何結論。(本條不強制遵守全部,若不遵守的部分則需在自己的測試規(guī)則中聲明)
10. 所有測試必須在未經(jīng)修改的64位Windows 10(或更高版本)系統(tǒng)上的未經(jīng)修改的、沒有設置會影響測試的參數(shù)的HMCL/PCL2啟動器上進行,Java環(huán)境要求:1.7.10~1.16.5使用未經(jīng)修改的jdk8/jre8,1.18.2及以上使用未經(jīng)修改的jdk17/jre17。一般地,在所有測試中,不得在啟動器中利用指定啟動參數(shù)去奪取最高優(yōu)先級。不得手動修改LaunchWrapper/ModLauncher中的任何文件,不得手動修改minecraft jar中的MANIFEST.MF文件。(本條不強制遵守全部,若不遵守的部分則需在自己的測試規(guī)則中聲明)
11. 在測試中,只允許測試者啟動防御、啟動攻擊、生成生物,不允許進行其他任何操作,不得使用除測試雙方外的其他mod或程序(mc自身除外),且測試者必須保證其他mod或程序不干涉測試。
12. 對于外部程序測試方,不得在mc啟動前啟動。
13. 凡是作用超出mc窗口的(要求測試時窗口不得一直處于全屏狀態(tài)),測試結果一律沒有意義,不可以根據(jù)測試現(xiàn)象得出任何結論。
14. 對于外部程序測試方,或者對于帶有依賴某種特定操作系統(tǒng)的部分的測試方,要求測試必須在其對應的操作系統(tǒng)上進行。
---------------------------------------------------------------------------------------------------------------------------
接下來就是一些常見的測試類型與對應的規(guī)則。
一、常規(guī)測試:相對常用的測試類型。
玩家死亡標準:1. 玩家血量顯示為0(即每一顆心都為純黑色,下同),且血條隨時間產(chǎn)生如mc原版一樣的死亡式抖動;
2. 顯示死亡gui(允許因為防御的作用而只被顯示部分的)(不允許閃爍),且死亡gui不能是純渲染的;
3. 鍵盤輸入和鼠標滾輪在mc中失效,鼠標點擊只允許響應在死亡gui的按鈕上(如果按鈕能被點擊),鼠標移動不能再讓玩家視角轉(zhuǎn)動;
4. 光標彈出mc窗口,變得可見(允許光標處于閃爍狀態(tài));
5. 在第三人稱中,玩家自身的實體消失(不得用渲染貼圖文件達成)。
玩家防住標準:1. 玩家血量顯示為滿血(即每一顆心都為紅色,下同),血條不產(chǎn)生死亡式抖動;
2. 沒有死亡gui顯示出來(只顯示出部分死亡gui也算顯示出來)(不允許閃爍);
3. 光標仍然在mc窗口中,不可見(允許光標處于閃爍狀態(tài));
4. 在第三人稱中,玩家自身的實體仍然可見(不得用渲染貼圖文件達成)。
生物死亡標準:玩家周圍,該生物消失,且/say @e不顯示該生物存在。要求世界渲染不能靜止。
生物防住標準:玩家仍能看見該生物,或/say @e仍然顯示該生物存在。要求世界渲染不能靜止。
二、嚴判測試:標準較嚴格的測試,測試結果更接近真實。
玩家死亡標準:1. 玩家血量顯示為0,且血條隨時間產(chǎn)生如mc原版一樣的抖動。若存在mod自己的hud,要求在血量渲染時,輸出的客戶端玩家實體.getHealth()小于等于0.0f,服務端世界刻后,輸出的被攻擊的服務端玩家實體.getHealth()小于等于0.0f;
2. 顯示死亡gui(允許因為防御的作用而只被顯示部分的)(不允許閃爍),且死亡gui不能是純渲染的。若死亡gui存在渲染行為,要求在死亡gui繪制時,輸出的mc.currentScreen(mc.screen)為死亡gui(mc為Minecraft類的對象,下同),
3. 要求死亡gui類必須繼承mc原版死亡界面GuiGameOver(1.13以上版本為DeathScreen),重生按鈕可被點擊且能正常重生;
4. 鍵盤輸入和鼠標滾輪在mc中失效,鼠標點擊只允許響應在死亡gui的按鈕上,鼠標移動不能再讓玩家視角轉(zhuǎn)動;
5. 光標彈出mc窗口,變得可見(不允許光標處于閃爍狀態(tài))且能自由移動;
6. 在自己的第三人稱以及其他玩家視角中,被攻擊的玩家的實體消失(不得用渲染貼圖文件達成)。
7.玩家視角發(fā)生像mc原版玩家正常死亡時一樣的傾斜(允許視角顫抖)。
玩家防住標準:1. 玩家血量顯示為滿血,血條不產(chǎn)生死亡式抖動。若存在mod自己的hud,要求在血量渲染時,輸出的客戶端玩家實體.getHealth()大于等于20.0f,服務端世界刻后,輸出的被攻擊的服務端玩家實體.getHealth()大于等于20.0f;
2. 沒有死亡gui顯示出來(只顯示出部分死亡gui也算顯示出來)(不允許閃爍),若顯示有死亡gui但其存在渲染行為,則如果在死亡gui繪制時,輸出的mc.currentScreen(mc.screen)不為死亡gui,就記為沒有死亡gui顯示出來;
3. 光標仍然在mc窗口中,不可見(不允許光標處于閃爍狀態(tài));
4. 鍵盤輸入、鼠標滾輪、鼠標點擊、鼠標移動仍然在mc中正常起效;
5. 在自己的第三人稱以及其他玩家視角中,被攻擊的玩家的實體仍然可見(不得用渲染貼圖文件達成),且/say @e仍然顯示被攻擊玩家存在。
生物死亡標準:1. 玩家周圍,該生物徹底消失,不再重生,且/say @e不顯示該生物存在(不允許使用tp達成),測試方不得對/say @e的執(zhí)行過程有任何干涉;
2. 對于可以測試碰撞箱的生物,要求玩家不再被該生物原應有的碰撞箱所排斥,玩家可以在生物原應有的碰撞箱的位置以正常方式放置方塊;
3. 要求世界渲染不能靜止;
4.?由于生物出現(xiàn)而帶來的一切異象必須全部消失。
生物防住標準:1. 玩家仍能看見該生物,且/say @e仍然可能顯示該生物存在,測試方不得對/say @e的執(zhí)行過程有任何干涉;?
2. 對于可以測試碰撞箱的生物,要求玩家會被該生物應有的碰撞箱所排斥,玩家不能夠在生物應有的碰撞箱的位置以正常方式放置方塊;
3.?生物必須包含且在攻擊后仍包含"繼承自Entity類的對象"這一部分;
4. 要求世界渲染不能靜止。
三、渲染測試:標準較為寬松,用于匹配純渲染的要求。
玩家死亡標準:顯示死亡gui(不允許因為防御的作用而只被顯示部分的)(不允許閃爍)。
玩家防住標準:沒有死亡gui顯示出來(只顯示出部分死亡gui算沒有顯示出來)(不允許閃爍)。
生物死亡標準:玩家無法看見該生物,碰撞箱不計。
生物防住標準:玩家可以看見該生物,碰撞箱不計。
4. 字節(jié)碼測試:標準接近病毒打架的測試(?
所有標準與嚴判測試相同。但是允許不遵循注意事項9。
---------------------------------------------------------------------------------------------------------------------------
以上給出了幾個測試定義示例,當雙方有其他測試目的時,可以據(jù)此協(xié)商自己的測試規(guī)則,規(guī)則的表述要力求嚴謹,且至少有玩家死亡標準和玩家防住標準(或者有生物死亡標準和生物防住標準),并且不能違反上述的注意事項(除非注意事項不強制遵守)。
本規(guī)則以后還會完善,歡迎大家在評論區(qū)集思廣益
最后祝測試愉快!