Implement clone in drive menu

This commit is contained in:
DBotThePony 2021-08-28 15:23:44 +07:00
parent b0e9a96e50
commit f1f1ce897c
Signed by: DBot
GPG Key ID: DCC23B5715498507
2 changed files with 22 additions and 2 deletions

View File

@ -303,6 +303,25 @@ public class DriveViewerMenu extends PoweredMatteryMenu {
return;
}
if (click == ClickType.CLONE) {
if (stack_id < 0 || !ply.getAbilities().instabuild)
return;
var get_state = view.state.get(stack_id);
if (get_state == null) {
return;
}
var copy = get_state.stack.copy();
copy.setCount(Math.min(copy.getCount(), copy.getMaxStackSize()));
menu.setCarried(copy);
MatteryNetworking.send(ply, new SetCarriedPacket(menu.getCarried()));
menu.setRemoteCarried(menu.getCarried().copy());
return;
}
if (!menu.getCarried().isEmpty() && click != ClickType.QUICK_MOVE) {
// try to put
if (action == ClickAction.PRIMARY) {

View File

@ -1,5 +1,6 @@
package ru.dbotthepony.mc.otm.screen;
import com.mojang.blaze3d.platform.InputConstants;
import net.minecraft.network.chat.Component;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.inventory.ClickAction;
@ -79,9 +80,9 @@ public class DriveViewerScreen extends MatteryScreen<DriveViewerMenu> implements
protected boolean mouseClickedInner(double mouse_x, double mouse_y, int mouse_click_type) {
int findex = index + scroll_bar.getScroll(GRID_WIDTH);
var list = menu.view.getItems();
var action = mouse_click_type == 0 ? ClickAction.PRIMARY : ClickAction.SECONDARY;
var action = mouse_click_type == InputConstants.MOUSE_BUTTON_LEFT ? ClickAction.PRIMARY : ClickAction.SECONDARY;
var type = hasShiftDown() ? ClickType.QUICK_MOVE : ClickType.PICKUP;
var type = mouse_click_type == InputConstants.MOUSE_BUTTON_MIDDLE ? ClickType.CLONE : hasShiftDown() ? ClickType.QUICK_MOVE : ClickType.PICKUP;
MatteryNetworking.send(new DriveViewerMenu.InteractPacket(menu.containerId, findex >= list.size() ? -1 : list.get(findex).id(), type, action));
return true;