- Tham gia
- 01/09/2017
- Bài viết
- 38
Mình đang implement Multiblock trong Bukkit (hoặc Spigot, gì cũng được), nhưng thuật này của mình sao tính ở bên ngoài (tính trên giấy và máy tính) thì nó ra được cái center nhưng vào trong code lại không chính xác. Đây là code: https://github.com/letruongthinh/Ma...mantle/multiblock/MultiBlockTracker.java#L100
Thuật để get center mình để ở trong method getCenter
Đây là cách hoạt động:
- Center (cách đều mỗi khoảng đến mỗi bức tường trong Multiblock, ko check ở trên và dưới) được tính bằng cách cho paremeter bất kì 1 block ở trong Multiblock, chỉ tính trên mặt phẳng X - Z, còn Y thì ko check.
- Gọi vị trí expand hiện tại của X ở bên trái (âm) là x1, bên phải (dương) là x2
- Ví dụ block mình cần check đang ở trên trục X (trục tọa độ), ở vị trí [-1, 0] (cái ở đầu là X, đằng sau là Z), mình sẽ mở rộng cái trục (trong code lol), nếu block tiếp theo trống (air, hoặc ko là bức tường) thì sẽ expand
- Nếu x1 - x2 (hoặc x2 - x1) lớn hơn 1 thì vị trí X cái Location của block đã cho trong parameter sẽ trừ 1 (hoặc cộng 1) theo hướng X. Và x1 sẽ bị trừ đi 1 và x2 sẽ dc cộng thêm 1 (nếu x1 - x2 > 1), và ngược lại.
- Lặp lại (bạn có thể vẽ 1 cái trục tọa độ r check, nếu multiblock là 3x3 thì chỉ cần 2 lần là dừng, 5x5 thì 4 lần)
Những điều trên có vẻ chính xác nhưng vào code là ..., ko hoạt động. Mấy thánh nào cao tuổi nhìu kinh nghiêm giúp em vs ạ, em ms học trục tọa độ năm ngoái nên chưa rành lắm, có thể đã tính sai chỗ nào đó
@anhcraft @Banbeucmas @Quang1999
Thuật để get center mình để ở trong method getCenter
Đây là cách hoạt động:
- Center (cách đều mỗi khoảng đến mỗi bức tường trong Multiblock, ko check ở trên và dưới) được tính bằng cách cho paremeter bất kì 1 block ở trong Multiblock, chỉ tính trên mặt phẳng X - Z, còn Y thì ko check.
- Gọi vị trí expand hiện tại của X ở bên trái (âm) là x1, bên phải (dương) là x2
- Ví dụ block mình cần check đang ở trên trục X (trục tọa độ), ở vị trí [-1, 0] (cái ở đầu là X, đằng sau là Z), mình sẽ mở rộng cái trục (trong code lol), nếu block tiếp theo trống (air, hoặc ko là bức tường) thì sẽ expand
- Nếu x1 - x2 (hoặc x2 - x1) lớn hơn 1 thì vị trí X cái Location của block đã cho trong parameter sẽ trừ 1 (hoặc cộng 1) theo hướng X. Và x1 sẽ bị trừ đi 1 và x2 sẽ dc cộng thêm 1 (nếu x1 - x2 > 1), và ngược lại.
- Lặp lại (bạn có thể vẽ 1 cái trục tọa độ r check, nếu multiblock là 3x3 thì chỉ cần 2 lần là dừng, 5x5 thì 4 lần)
Những điều trên có vẻ chính xác nhưng vào code là ..., ko hoạt động. Mấy thánh nào cao tuổi nhìu kinh nghiêm giúp em vs ạ, em ms học trục tọa độ năm ngoái nên chưa rành lắm, có thể đã tính sai chỗ nào đó

@anhcraft @Banbeucmas @Quang1999





sao đo dc, nếu đo phải check từng block rất mệt