Changed reach upgrade recipes. Made radial menu smaller.

Cleaned up radial menu code.
Added russian language.
Tweaked cube icon.
This commit is contained in:
Christian Knaapen
2023-01-14 15:35:43 +01:00
parent 5e6c42d372
commit ea59fef099
9 changed files with 107 additions and 25 deletions

View File

@@ -4,7 +4,7 @@ plugins {
id 'net.minecraftforge.gradle' version '5.1.+' id 'net.minecraftforge.gradle' version '5.1.+'
} }
version = '1.19-2.37' version = '1.19-2.38'
group = 'nl.requios.effortlessbuilding' group = 'nl.requios.effortlessbuilding'
archivesBaseName = 'effortlessbuilding' archivesBaseName = 'effortlessbuilding'

View File

@@ -46,6 +46,8 @@ import nl.requios.effortlessbuilding.buildmode.ModeOptions.OptionEnum;
@MethodsReturnNonnullByDefault @MethodsReturnNonnullByDefault
public class RadialMenu extends Screen { public class RadialMenu extends Screen {
public static final RadialMenu instance = new RadialMenu();
private final Vector4f radialButtonColor = new Vector4f(0f, 0f, 0f, .5f); private final Vector4f radialButtonColor = new Vector4f(0f, 0f, 0f, .5f);
private final Vector4f sideButtonColor = new Vector4f(.5f, .5f, .5f, .5f); private final Vector4f sideButtonColor = new Vector4f(.5f, .5f, .5f, .5f);
private final Vector4f highlightColor = new Vector4f(.6f, .8f, 1f, .6f); private final Vector4f highlightColor = new Vector4f(.6f, .8f, 1f, .6f);
@@ -57,15 +59,14 @@ public class RadialMenu extends Screen {
private final int descriptionTextColor = 0xdd888888; private final int descriptionTextColor = 0xdd888888;
private final int optionTextColor = 0xeeeeeeff; private final int optionTextColor = 0xeeeeeeff;
private final double ringInnerEdge = 40; private final double ringInnerEdge = 30;
private final double ringOuterEdge = 80; private final double ringOuterEdge = 65;
private final double categoryLineOuterEdge = 42; private final double categoryLineWidth = 1;
private final double textDistance = 90; private final double textDistance = 75;
private final double buttonDistance = 120; private final double buttonDistance = 105;
private final float fadeSpeed = 0.3f; private final float fadeSpeed = 0.3f;
private final int descriptionHeight = 100; private final int descriptionHeight = 100;
public static final RadialMenu instance = new RadialMenu();
public BuildModeEnum switchTo = null; public BuildModeEnum switchTo = null;
public ActionEnum doAction = null; public ActionEnum doAction = null;
public boolean performedActionUsingMouse; public boolean performedActionUsingMouse;
@@ -165,7 +166,8 @@ public class RadialMenu extends Screen {
doAction = null; doAction = null;
//Draw buildmode backgrounds //Draw buildmode backgrounds
drawRadialButtonBackgrounds(currentBuildMode, buffer, middleX, middleY, mouseXCenter, mouseYCenter, mouseRadians, ringInnerEdge, ringOuterEdge, quarterCircle, modes); drawRadialButtonBackgrounds(currentBuildMode, buffer, middleX, middleY, mouseXCenter, mouseYCenter, mouseRadians,
quarterCircle, modes);
//Draw action backgrounds //Draw action backgrounds
drawSideButtonBackgrounds(buffer, middleX, middleY, mouseXCenter, mouseYCenter, buttons); drawSideButtonBackgrounds(buffer, middleX, middleY, mouseXCenter, mouseYCenter, buttons);
@@ -174,14 +176,15 @@ public class RadialMenu extends Screen {
RenderSystem.disableBlend(); RenderSystem.disableBlend();
RenderSystem.enableTexture(); RenderSystem.enableTexture();
drawIcons(ms, tessellator, buffer, middleX, middleY, ringInnerEdge, ringOuterEdge, modes, buttons); drawIcons(ms, middleX, middleY, modes, buttons);
drawTexts(ms, currentBuildMode, middleX, middleY, textDistance, buttonDistance, modes, buttons, options); drawTexts(ms, currentBuildMode, middleX, middleY, modes, buttons, options);
ms.popPose(); ms.popPose();
} }
private void drawRadialButtonBackgrounds(BuildModeEnum currentBuildMode, BufferBuilder buffer, double middleX, double middleY, double mouseXCenter, double mouseYCenter, double mouseRadians, double ringInnerEdge, double ringOuterEdge, double quarterCircle, ArrayList<MenuRegion> modes) { private void drawRadialButtonBackgrounds(BuildModeEnum currentBuildMode, BufferBuilder buffer, double middleX, double middleY,
double mouseXCenter, double mouseYCenter, double mouseRadians, double quarterCircle, ArrayList<MenuRegion> modes) {
if (!modes.isEmpty()) { if (!modes.isEmpty()) {
final int totalModes = Math.max(3, modes.size()); final int totalModes = Math.max(3, modes.size());
final double fragment = Math.PI * 0.005; //gap between buttons in radians at inner edge final double fragment = Math.PI * 0.005; //gap between buttons in radians at inner edge
@@ -230,6 +233,7 @@ public class RadialMenu extends Screen {
//Category line //Category line
color = menuRegion.mode.category.color; color = menuRegion.mode.category.color;
final double categoryLineOuterEdge = ringInnerEdge + categoryLineWidth;
final double x1m3 = Math.cos(beginRadians + fragment) * categoryLineOuterEdge; final double x1m3 = Math.cos(beginRadians + fragment) * categoryLineOuterEdge;
final double x2m3 = Math.cos(endRadians - fragment) * categoryLineOuterEdge; final double x2m3 = Math.cos(endRadians - fragment) * categoryLineOuterEdge;
@@ -274,7 +278,8 @@ public class RadialMenu extends Screen {
} }
} }
private void drawIcons(PoseStack ms, Tesselator tessellator, BufferBuilder buffer, double middleX, double middleY, double ringInnerEdge, double ringOuterEdge, ArrayList<MenuRegion> modes, ArrayList<MenuButton> buttons) { private void drawIcons(PoseStack ms, double middleX, double middleY,
ArrayList<MenuRegion> modes, ArrayList<MenuButton> buttons) {
ms.pushPose(); ms.pushPose();
RenderSystem.enableTexture(); RenderSystem.enableTexture();
RenderSystem.setShader(GameRenderer::getPositionColorTexShader); RenderSystem.setShader(GameRenderer::getPositionColorTexShader);
@@ -303,7 +308,7 @@ public class RadialMenu extends Screen {
ms.popPose(); ms.popPose();
} }
private void drawTexts(PoseStack ms, BuildModeEnum currentBuildMode, double middleX, double middleY, double textDistance, double buttonDistance, ArrayList<MenuRegion> modes, ArrayList<MenuButton> buttons, OptionEnum[] options) { private void drawTexts(PoseStack ms, BuildModeEnum currentBuildMode, double middleX, double middleY, ArrayList<MenuRegion> modes, ArrayList<MenuButton> buttons, OptionEnum[] options) {
//font.drawStringWithShadow("Actions", (int) (middleX - buttonDistance - 13) - font.getStringWidth("Actions") * 0.5f, (int) middleY - 38, 0xffffffff); //font.drawStringWithShadow("Actions", (int) (middleX - buttonDistance - 13) - font.getStringWidth("Actions") * 0.5f, (int) middleY - 38, 0xffffffff);
//Draw option strings //Draw option strings
@@ -474,7 +479,8 @@ public class RadialMenu extends Screen {
public static void playRadialMenuSound() { public static void playRadialMenuSound() {
final float volume = 0.1f; final float volume = 0.1f;
if (volume >= 0.0001f) { if (volume >= 0.0001f) {
SimpleSoundInstance sound = new SimpleSoundInstance(SoundEvents.UI_BUTTON_CLICK, SoundSource.MASTER, volume, 1.0f, RandomSource.create(), Minecraft.getInstance().player.blockPosition()); SimpleSoundInstance sound = new SimpleSoundInstance(SoundEvents.UI_BUTTON_CLICK, SoundSource.MASTER, volume,
1.0f, RandomSource.create(), Minecraft.getInstance().player.blockPosition());
Minecraft.getInstance().getSoundManager().play(sound); Minecraft.getInstance().getSoundManager().play(sound);
} }
} }

View File

@@ -0,0 +1,79 @@
{
"efortlessbuilding.screen.modifier_settings": "Настройки модификатора",
"efortlessbuilding.screen.radial_menu": "Режимы строительства",
"efortlessbuilding.screen.player_settings": "Настройки игрока",
"key.efortlessbuilding.category": "Строительство без усилий",
"key.efortlessbuilding.hud.desc": "Меню модификаторов",
"key.effortlessbuilding.replace.desc": "Переключить быструю замену",
"key.efortlessbuilding.mode.desc": "Круговое меню",
"key.efortlessbuilding.undo.desc": "Отменить",
"key.effortlessbuilding.redo.desc": "Повторить",
"key.efortlessbuilding.altplacement.desc": "Альтернативное размещение",
"efortlessbuilding:randomizer_bag": "Кожаная сумка рандомизатора",
"efortlessbuilding:golden_randomizer_bag": "Золотой мешок рандомизатора",
"efortlessbuilding:diamond_randomizer_bag": "Бриллиантовый рандомизатор",
"efortlessbuilding:reach_upgrade1": "Достичь улучшения 1",
"efortlessbuilding:reach_upgrade2": "Достичь улучшения 2",
"efortlessbuilding:reach_upgrade3": "Достичь улучшения 3",
"efortlessbuilding.mode.normal": "Отключить",
"efortlessbuilding.mode.normal_plus": "Одиночный",
"efortlessbuilding.mode.line": "Линия",
"efortlessbuilding.mode.wall": "Стена",
"efortlessbuilding.mode.floor": "Этаж",
"efortlessbuilding.mode.diagonal_line": "Диагональная линия",
"efortlessbuilding.mode.diagonal_wall": "Диагональная стена",
"effortlessbuilding.mode.slope_floor": "Наклонный этаж",
"effortlessbuilding.mode.cube": "Куб",
"efortlessbuilding.mode.circle": "Круг",
"efortlessbuilding.mode.cylinder": "Цилиндр",
"efortlessbuilding.mode.sphere": "Сфера",
"efortlessbuilding.mode.pyramid": "Пирамида",
"effortlessbuilding.mode.cone": "Конус",
"efortlessbuilding.mode.dome": "Купол",
"effortlessbuilding.modedescription.normal": "Отключить мод и использовать ванильные правила размещения",
"effortlessbuilding.modedescription.normal_plus": "Как и ваниль, но с увеличенным охватом и предварительным просмотром места размещения",
"efortlessbuilding.modedescription.line": "",
"efortlessbuilding.modedescription.wall": "",
"efortlessbuilding.modedescription.floor": "",
"efortlessbuilding.modedescription.diagonal_line": "",
"efortlessbuilding.modedescription.diagonal_wall": "",
"effortlessbuilding.modedescription.slope_floor": "",
"efortlessbuilding.modedescription.cube": "",
"efortlessbuilding.modedescription.circle": "",
"efortlessbuilding.modedescription.cylinder": "",
"efortlessbuilding.modedescription.sphere": "",
"efortlessbuilding.modedescription.pyramid": "",
"efortlessbuilding.modedescription.cone": "",
"efortlessbuilding.modedescription.dome": "",
"efortlessbuilding.action.undo": "Отменить",
"efortlessbuilding.action.redo": "Повторить",
"efortlessbuilding.action.replace": "Заменить",
"efortlessbuilding.action.open_modifier_settings": "Открыть настройки модификатора",
"efortlessbuilding.action.open_player_settings": "Открыть настройки",
"efortlessbuilding.action.build_speed": "Скорость сборки",
"efortlessbuilding.action.filling": "Заполнение",
"efortlessbuilding.action.raised_edge": "Приподнятый край",
"efortlessbuilding.action.thickness": "Толщина линии",
"efortlessbuilding.action.circle_start": "Начальная точка",
"efortlessbuilding.action.normal_speed": "Нормальный",
"efortlessbuilding.action.fast_speed": "Быстро",
"efortlessbuilding.action.full": "Заполнено",
"efortlessbuilding.action.hollow": "Пустой",
"efortlessbuilding.action.skeleton": "Скелет",
"efortlessbuilding.action.short_edge": "Короткая кромка",
"efortlessbuilding.action.long_edge": "Длинный край",
"efortlessbuilding.action.thickness_1": "Толщиной 1 блок",
"efortlessbuilding.action.thickness_3": "Толщиной 3 блока",
"efortlessbuilding.action.thickness_5": "Толщиной 5 блоков",
"efortlessbuilding.action.start_center": "Посередине",
"efortlessbuilding.action.start_corner": "Угол",
"commands.reach.usage": "/reach <уровень>"
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 319 B

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 603 B

After

Width:  |  Height:  |  Size: 625 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 625 B

After

Width:  |  Height:  |  Size: 603 B

View File

@@ -10,7 +10,7 @@
"item": "minecraft:ender_pearl" "item": "minecraft:ender_pearl"
}, },
"#": { "#": {
"item": "minecraft:prismarine_crystals" "item": "minecraft:slime_ball"
} }
}, },
"result": { "result": {

View File

@@ -1,19 +1,16 @@
{ {
"type": "minecraft:crafting_shaped", "type": "minecraft:crafting_shaped",
"pattern": [ "pattern": [
"x#x", " # ",
"#O#", "#O#",
"x#x" " # "
], ],
"key": { "key": {
"O": { "O": {
"item": "minecraft:ender_pearl" "item": "minecraft:ender_pearl"
}, },
"#": { "#": {
"item": "minecraft:slime_ball" "item": "minecraft:blaze_powder"
},
"x": {
"item": "minecraft:chorus_fruit"
} }
}, },
"result": { "result": {

View File

@@ -7,13 +7,13 @@
], ],
"key": { "key": {
"O": { "O": {
"item": "minecraft:nether_star" "item": "minecraft:end_crystal"
}, },
"#": { "#": {
"item": "minecraft:diamond" "item": "minecraft:chorus_fruit"
}, },
"x": { "x": {
"item": "minecraft:amethyst_shard" "item": "minecraft:ghast_tear"
} }
}, },
"result": { "result": {