mirror of
https://github.com/Theta-Dev/ConstructionWand.git
synced 2024-11-24 15:11:00 +01:00
Compare commits
No commits in common. "e9fa2a4c588f225de95b417677d0e8ac86734d1c" and "7b7cc09c1d76149a4157af84ce1e609a71ea0b5a" have entirely different histories.
e9fa2a4c58
...
7b7cc09c1d
6 changed files with 11 additions and 152 deletions
|
@ -15,4 +15,4 @@ mcp_mappings=1.17.1
|
|||
jei_version=jei-1.17.1:8.3.0.39
|
||||
|
||||
version_major=2
|
||||
version_minor=11
|
||||
version_minor=9
|
|
@ -22,7 +22,7 @@ import java.util.Set;
|
|||
|
||||
public class RenderBlockPreview
|
||||
{
|
||||
private WandJob wandJob;
|
||||
public WandJob wandJob;
|
||||
public Set<BlockPos> undoBlocks;
|
||||
|
||||
@SubscribeEvent
|
||||
|
@ -39,11 +39,7 @@ public class RenderBlockPreview
|
|||
if(wand == null) return;
|
||||
|
||||
if(!(player.isCrouching() && ClientEvents.isOptKeyDown())) {
|
||||
// Use cached wandJob for previews of the same target pos/dir
|
||||
// Exception: always update if blockCount < 2 to prevent 1-block previews when block updates
|
||||
// from the last placement are lagging
|
||||
if(wandJob == null || !compareRTR(wandJob.rayTraceResult, rtr) || !(wandJob.wand.equals(wand))
|
||||
|| wandJob.blockCount() < 2) {
|
||||
if(wandJob == null || !compareRTR(wandJob.rayTraceResult, rtr) || !(wandJob.wand.equals(wand))) {
|
||||
wandJob = ItemWand.getWandJob(player, player.level, rtr, wand);
|
||||
}
|
||||
blocks = wandJob.getBlockPositions();
|
||||
|
|
|
@ -87,10 +87,6 @@ public class WandJob
|
|||
return placeSnapshots.stream().map(ISnapshot::getPos).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
public int blockCount() {
|
||||
return placeSnapshots.size();
|
||||
}
|
||||
|
||||
public boolean doIt() {
|
||||
ArrayList<ISnapshot> executed = new ArrayList<>();
|
||||
|
||||
|
|
|
@ -6,6 +6,8 @@ import net.minecraft.world.item.BlockItem;
|
|||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.context.BlockPlaceContext;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
||||
import net.minecraft.world.level.block.state.properties.Property;
|
||||
|
@ -98,7 +100,7 @@ public class PlaceSnapshot implements ISnapshot
|
|||
|
||||
// Can block be placed?
|
||||
BlockState blockState = item.getBlock().getStateForPlacement(ctx);
|
||||
if(blockState == null || !blockState.canSurvive(world, pos)) return null;
|
||||
if(blockState == null) return null;
|
||||
|
||||
// Forbidden Tile Entity?
|
||||
if(!WandUtil.isTEAllowed(blockState)) return null;
|
||||
|
@ -106,6 +108,11 @@ public class PlaceSnapshot implements ISnapshot
|
|||
// No entities colliding?
|
||||
if(WandUtil.entitiesCollidingWithBlock(world, blockState, pos)) return null;
|
||||
|
||||
// Adjust blockstate to neighbors
|
||||
// TODO: verify that
|
||||
blockState = Block.updateFromNeighbourShapes(blockState, world, pos);
|
||||
if(blockState.getBlock() == Blocks.AIR || !blockState.canSurvive(world, pos)) return null;
|
||||
|
||||
// Copy block properties from supporting block
|
||||
if(targetMode && supportingBlock != null) {
|
||||
// Block properties to be copied (alignment/rotation properties)
|
||||
|
|
|
@ -1,70 +0,0 @@
|
|||
{
|
||||
"item.constructionwand.stone_wand": "Каменный жезл",
|
||||
"item.constructionwand.iron_wand": "Железный жезл",
|
||||
"item.constructionwand.diamond_wand": "Алмазный жезл",
|
||||
"item.constructionwand.infinity_wand": "Бесконечный жезл",
|
||||
"item.constructionwand.core_angel": "Ангельское ядро для жезла",
|
||||
"item.constructionwand.core_destruction": "Ядро разрушения для жезла",
|
||||
|
||||
"constructionwand.tooltip.blocks": "Максимум %d блоков",
|
||||
"constructionwand.tooltip.shift": "Нажмите [SHIFT]",
|
||||
"constructionwand.tooltip.cores": "Ядер жезла:",
|
||||
"constructionwand.tooltip.core_tip": "Объедините ядро со своим жезлом в сетке создания.",
|
||||
|
||||
"constructionwand.option.cores": "",
|
||||
"constructionwand.option.cores.constructionwand:default": "Ядро строительства",
|
||||
"constructionwand.option.cores.constructionwand:default.desc": "Расширяйте свои строения на стороне, обращённой к Вам.",
|
||||
"constructionwand.option.cores.constructionwand:core_angel": "§6Ангельское ядро",
|
||||
"constructionwand.option.cores.constructionwand:core_angel.desc": "Размещает за блоками и в воздухе.",
|
||||
"constructionwand.option.cores.constructionwand:core_destruction": "§cЯдро разрушения",
|
||||
"constructionwand.option.cores.constructionwand:core_destruction.desc": "Уничтожает блоки на стороне, обращённой к Вам.",
|
||||
|
||||
"constructionwand.option.lock": "Ограничение: ",
|
||||
"constructionwand.option.lock.horizontal": "§aВлево/Вправо",
|
||||
"constructionwand.option.lock.horizontal.desc": "Строить горизонтальную колонну перед основным блоком.",
|
||||
"constructionwand.option.lock.vertical": "§aВверх/Вниз",
|
||||
"constructionwand.option.lock.vertical.desc": "Строить вертикальную колонну перед основным блоком.",
|
||||
"constructionwand.option.lock.northsouth": "§6Север/Юг",
|
||||
"constructionwand.option.lock.northsouth.desc": "Строить ряд в С/Ю направлении непосредственно за основным блоком.",
|
||||
"constructionwand.option.lock.eastwest": "§6Восток/Запад",
|
||||
"constructionwand.option.lock.eastwest.desc": "Строить ряд в В/З направлении непосредственно за основным блоком.",
|
||||
"constructionwand.option.lock.nolock": "§cНичего",
|
||||
"constructionwand.option.lock.nolock.desc": "Расширять с любой стороны основного блока.",
|
||||
|
||||
"constructionwand.option.direction": "Направление: ",
|
||||
"constructionwand.option.direction.target": "§6Цель",
|
||||
"constructionwand.option.direction.target.desc": "Размещать блоки с таким же направлением как целевой блок.",
|
||||
"constructionwand.option.direction.player": "§aИгрок",
|
||||
"constructionwand.option.direction.player.desc": "Размещать блоки, обращённые к игроку.",
|
||||
|
||||
"constructionwand.option.replace": "Замена: ",
|
||||
"constructionwand.option.replace.yes": "§aДа",
|
||||
"constructionwand.option.replace.yes.desc": "Заменять некоторые блоки как жидкости, снег и высокорослая трава.",
|
||||
"constructionwand.option.replace.no": "§cНет",
|
||||
"constructionwand.option.replace.no.desc": "Не заменять блоки.",
|
||||
|
||||
"constructionwand.option.match": "Совпадение: ",
|
||||
"constructionwand.option.match.exact": "§aТочное",
|
||||
"constructionwand.option.match.exact.desc": "Расширять только абсолютно одинаковые блоки.",
|
||||
"constructionwand.option.match.similar": "§6Похожее",
|
||||
"constructionwand.option.match.similar.desc": "Подносить аналогичные блоки (пример: земля/трава) поровну.",
|
||||
"constructionwand.option.match.any": "§cНикакое",
|
||||
"constructionwand.option.match.any.desc": "Расширять любой блок.",
|
||||
|
||||
"constructionwand.option.random": "Случайно: ",
|
||||
"constructionwand.option.random.yes": "§aДа",
|
||||
"constructionwand.option.random.yes.desc": "Размещать случайные блоки, имеющиеся в Вашей горячей панели.",
|
||||
"constructionwand.option.random.no": "§cНет",
|
||||
"constructionwand.option.random.no.desc": "Не располагать блоки в случайном порядке.",
|
||||
|
||||
"constructionwand.description.wand": "%1$s может размещать до %2$d блоков сбоку от строения, обращённое к Вам и его хватит на %3$s блоков.\n\nУдерживайте %5$s и прокрутите колёсиком для изменения ограничения по размещении (Горизонтально, Вертикально, Север/Юг, Восток/Запад, Без ограничивания).\n\nОткройте экран настроек при помощи %6$s§9+щелчок правой кнопкой мыши§0.\n\n§5§nОТМЕНА§0§r\nУдерживайте §9Приседание+§0%4$s пока смотрите на блоки, установленные Вами, они будут выделены зелёным контуром. §9Приседание+§0%4$s§9+щелчок правой кнопкой мыши§0 на любой из них отменит операцию, вернув Вам все предметы обратно. Если использовать Ядро разрушения, то он вернёт блоки.\n\n§5§nКОНТЕЙНЕР§0§r\nШалкеровые ящики, мешки и множество контейнеров из других модов могут предоставлять строительные блоки в жезл.\n\n§5§nПРИОРИТЕТ ЛЕВОЙ РУКИ§0§r\nЕсли у Вас в левой руке находятся блоки, то они будут размещаться вместо блока, на который Вы смотрите.",
|
||||
"constructionwand.description.durability.limited": "на %d блоков",
|
||||
"constructionwand.description.durability.unlimited": "вечно",
|
||||
"constructionwand.description.key.sneak": "Приседание",
|
||||
"constructionwand.description.key.sneak_opt": "Приседание+%s",
|
||||
"constructionwand.description.core": "§5§nУСТАНОВКА§0§r\nПоложите своё новое ядро вместе со своим жезлом в сетку создания для его установки. Для того, чтобы переключаться между ядрами, удерживайте %s и нажмите левую кнопку мыши по пустому пространству с жезлом в руке или используйте экран настроек.",
|
||||
"constructionwand.description.core_angel": "Ангельское ядро размещает блоки на противоположной стороне блока (или ряда блоков), обращённые к Вам. Максимальное расстояние зависит от уровня жезла. Щелчок правой кнопкой мыши по пустому воздуху разместит блок в воздухе. Чтобы это сделать, Вам нужно иметь необходимые блоки в левой руке, чтобы разместить их.",
|
||||
"constructionwand.description.core_destruction": "Ядро разрушения разрушает блоки (не функциональные блоки), обращённые к Вам. Максимально количество блоков зависит от уровня жезла. Разрушенные блоки исчезают в пустоту, можно использовать функцию отмены в случае допущенной ошибки.",
|
||||
|
||||
"stat.constructionwand.use_wand": "Блоки, размещённые при помощи Жезла"
|
||||
}
|
|
@ -1,70 +0,0 @@
|
|||
{
|
||||
"item.constructionwand.stone_wand": "Taş Asa",
|
||||
"item.constructionwand.iron_wand": "Demir Asa",
|
||||
"item.constructionwand.diamond_wand": "Elmas Asa",
|
||||
"item.constructionwand.infinity_wand": "Sonsuzluk Asası",
|
||||
"item.constructionwand.core_angel": "Melek Asa Çekirdeği",
|
||||
"item.constructionwand.core_destruction": "Yıkım Asa Çekirdeği",
|
||||
|
||||
"constructionwand.tooltip.blocks": "Maks. %d blok",
|
||||
"constructionwand.tooltip.shift": "[SHIFT] bas",
|
||||
"constructionwand.tooltip.cores": "Asa çekirdekleri:",
|
||||
"constructionwand.tooltip.core_tip": "Çekirdeği asanızla birlikte üretim ızgarasında birleştirin",
|
||||
|
||||
"constructionwand.option.cores": "",
|
||||
"constructionwand.option.cores.constructionwand:default": "İnşa Çekirdeği",
|
||||
"constructionwand.option.cores.constructionwand:default.desc": "Yapınızın size bakan tarafını uzatır",
|
||||
"constructionwand.option.cores.constructionwand:core_angel": "§6Melek Çekirdeği",
|
||||
"constructionwand.option.cores.constructionwand:core_angel.desc": "Blokların arkasına ve havaya yerleştirir",
|
||||
"constructionwand.option.cores.constructionwand:core_destruction": "§cYıkım Çekirdeği",
|
||||
"constructionwand.option.cores.constructionwand:core_destruction.desc": "Size bakan taraftaki blokları yok eder",
|
||||
|
||||
"constructionwand.option.lock": "Sınırlama: ",
|
||||
"constructionwand.option.lock.horizontal": "§aSol/Sağ",
|
||||
"constructionwand.option.lock.horizontal.desc": "Orijinal bloğun önüne yatay bir sütun oluşturur",
|
||||
"constructionwand.option.lock.vertical": "§aYukarı/Aşağı",
|
||||
"constructionwand.option.lock.vertical.desc": "Orijinal bloğun önünde dikey bir sütun oluşturur",
|
||||
"constructionwand.option.lock.northsouth": "§6Kuzey/Güney",
|
||||
"constructionwand.option.lock.northsouth.desc": "Orijinal bloğun üstüne K/G yönünde bir sıra oluşturun",
|
||||
"constructionwand.option.lock.eastwest": "§6Doğu/Batı",
|
||||
"constructionwand.option.lock.eastwest.desc": "Orijinal bloğun üstüne D/B yönünde bir sıra oluşturur",
|
||||
"constructionwand.option.lock.nolock": "§cYok",
|
||||
"constructionwand.option.lock.nolock.desc": "Orijinal bloğun herhangi bir tarafından uzatır",
|
||||
|
||||
"constructionwand.option.direction": "Yön: ",
|
||||
"constructionwand.option.direction.target": "§6Hedef",
|
||||
"constructionwand.option.direction.target.desc": "Blokları hedef blokla aynı yönde yerleştirir",
|
||||
"constructionwand.option.direction.player": "§aOyuncu",
|
||||
"constructionwand.option.direction.player.desc": "Blokları oyuncuya bakacak şekilde yerleştirir",
|
||||
|
||||
"constructionwand.option.replace": "Değiştirme: ",
|
||||
"constructionwand.option.replace.yes": "§aEvet",
|
||||
"constructionwand.option.replace.yes.desc": "Sıvılar, kar ve uzun otlar gibi belirli blokları değiştirir",
|
||||
"constructionwand.option.replace.no": "§cHayır",
|
||||
"constructionwand.option.replace.no.desc": "Blokları değiştirmez",
|
||||
|
||||
"constructionwand.option.match": "Eşleşen: ",
|
||||
"constructionwand.option.match.exact": "§aAynı",
|
||||
"constructionwand.option.match.exact.desc": "Yalnızca tamamen aynı olan blokları uzatır",
|
||||
"constructionwand.option.match.similar": "§6Benzer",
|
||||
"constructionwand.option.match.similar.desc": "Benzer bloklara (toprak/çimen türleri) eşit davranır",
|
||||
"constructionwand.option.match.any": "§cHerhangi",
|
||||
"constructionwand.option.match.any.desc": "Herhangi bir bloğu uzatır",
|
||||
|
||||
"constructionwand.option.random": "Rastgele: ",
|
||||
"constructionwand.option.random.yes": "§aEvet",
|
||||
"constructionwand.option.random.yes.desc": "Hotbar'ınızdan rastgele bloklar yerleştirir",
|
||||
"constructionwand.option.random.no": "§cHayır",
|
||||
"constructionwand.option.random.no.desc": "Yerleştirilen blokları rastgeleleştirmez",
|
||||
|
||||
"constructionwand.description.wand": "%1$s, bir yapının size bakan tarafına en fazla %2$d blok yerleştirebilir ve %3$s dayanıklılığı vardır.\n\n%5$s tuşunu basılı tutun ve yerleştirme sınırlamasını değiştirmek için kaydırın (Yatay, Dikey, Kuzey/Güney, Doğu/Batı, Kilitsiz).\n\n%6$s§9+Sağ tıklama ile seçenek ekranını açın§0.\n\n§5§nGERİ ALMA§0§r\nBir bloğa bakarken §9Eğil+§0%4$s tuşunu basılı tuttuğunuzda, yerleştirdiğiniz son bloklar, çevresinde yeşil bir çerçeveyle gösterilecektir. §9Eğil+§0%4$s§9+Bunlardan herhangi birine sağ tıklama§0 işlemi geri alacak ve tüm öğeleri size geri verecektir. Yıkım çekirdeğini kullandıysanız blokları geri koyacaktır.\n\n§5§nKONTEYNERLER§0§r\nShulker kutuları, paketler ve diğer modlardan birçok konteyner, asa için yapı taşları sağlar.\n\n§5§nBOŞTAKİ EL ÖNCELİĞݧ0§r\nBoştaki elinizde blok olduğunda, baktığınız blok yerine boştaki elinizdekini yerleştirirsiniz.",
|
||||
"constructionwand.description.durability.limited": "%d blok için",
|
||||
"constructionwand.description.durability.unlimited": "sonsuza kadar",
|
||||
"constructionwand.description.key.sneak": "Eğil",
|
||||
"constructionwand.description.key.sneak_opt": "Eğil+%s",
|
||||
"constructionwand.description.core": "§5§nKURULUM§0§r\nTakmak için yeni çekirdeğinizi asanızla birlikte bir üretim ızgarasına koyun. Çekirdekler arasında geçiş yapmak için %s tuşunu basılı tutun ve asanızla boş alana sol tıklayın veya seçenek ekranını kullanın",
|
||||
"constructionwand.description.core_angel": "Melek çekirdeği, karşı karşıya olduğunuz bloğun (veya blok sırasının) karşı tarafına bir blok yerleştirir. Maksimum mesafe asa seviyesine bağlıdır. Havada bir blok yerleştirmek için boş alana sağ tıklayın. Bunu yapmak için, yerleştirmek istediğiniz bloğu boştaki elinize almalısınız.",
|
||||
"constructionwand.description.core_destruction": "Yıkım çekirdeği, size bakan taraftaki blokları (tile entities haricinde) yok eder. Maksimum blok sayısı asa seviyesine bağlıdır. Yok edilen bloklar boşluğa kaybolur, hata yaptıysanız geri alma özelliğini kullanabilirsiniz.",
|
||||
|
||||
"stat.constructionwand.use_wand": "Asa kullanılarak yerleştirilen bloklar"
|
||||
}
|
Loading…
Reference in a new issue