Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
# CHANGELOG

## Version Update
- Require `Myotus` version to 15.0.7

## Features
- Extended Wireless Terminal support `Quantum Bridge Card`

## Bug Fixes
- fix crash when open extended crafting guideme page
- fix JEI missingSlot miss match in shapeless crafting recipe
- Fixed AE2WTLib Wireless Universal Terminal recipes to preserve Myotus upgrade storage data
3 changes: 3 additions & 0 deletions TODO.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
1. et wireless terminal quantum link 구현하기
2. Myotus업그레이드인 ITerminalUpgradeCard를 터미널에 SideUpgradePanel에 장착한 상태로 다른 wireless terminal이랑 합쳐서 universal terminal로 만들면 SideUpgradePanel에 아무것도 안남앙있음
3. jei의 missingSlot 잘 못 표기 되고 있음. ae2wtlib에 wct를 잘 찾아보고 또는 CraftingTermMenu를 잘 찾아보고 뭐가 다른지 고쳐줘
8 changes: 4 additions & 4 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,16 @@ mod_id=extendedterminal
mod_name=Extended Terminal
mod_license=GNU LGPL 3.0
mod_loader=forge
mod_version=15.0.2
mod_version=15.0.3
mod_group_id=me.myogoo
java_version=17
mod_version_type=beta

mod_authors=NJoyShadow
mod_description=Add some terminal like extended crafting

Myotus_version=15.0.3
myotus_version_range=[15.0.3,)
Myotus_version=15.0.7
myotus_version_range=[15.0.7,)
AE2_version=15.4.10
AE2WTLib_version=15.3.3-forge

Expand All @@ -37,7 +37,7 @@ Cucumber_version=7.0.14
ExtendedCrafting_version=6.0.9
guideME_version=20.1.11

itemListMod=emi
itemListMod=jei

enable_avaritia=re
enable_excrafting=ex
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import me.myogoo.myotus.api.annotation.wt.AE2WTLib;
import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.eventbus.api.EventPriority;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
Expand All @@ -36,7 +35,7 @@ public ExtendedTerminal() {
if (MyotusAPI.get().modIntegrationManager().isLoaded(AE2WTLib.class)) {
WTItems.register();
WTMenus.register();
modEventBus.addListener(EventPriority.LOWEST,WTInits::init);
WTInits.registerTerminal();
}

MinecraftForge.EVENT_BUS.register(this);
Expand Down
33 changes: 17 additions & 16 deletions src/main/java/me/myogoo/extendedterminal/init/wt/WTInits.java
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
package me.myogoo.extendedterminal.init.wt;

import appeng.api.features.GridLinkables;
import appeng.items.tools.powered.WirelessTerminalItem;
import de.mari_023.ae2wtlib.wut.WUTHandler;
import me.myogoo.extendedterminal.me.host.ETWTHost;
import me.myogoo.extendedterminal.menu.ETMenuType;
import me.myogoo.extendedterminal.menu.extendedterminal.wt.ETWTMenu;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegisterEvent;
import me.myogoo.myotus.api.wt.AddTerminalEvent;

public class WTInits {
public static void init(RegisterEvent event) {
if (event.getRegistryKey().equals(ForgeRegistries.Keys.ITEMS)) {
WUTHandler
.addTerminal("wireless_et_terminal",
WTItems.WIRELESS_ET_TERMINAL.asItem()::tryOpen,
ETWTHost::new,
ETWTMenu.TYPE,
WTItems.WIRELESS_ET_TERMINAL.asItem());
}
public final class WTInits {
private WTInits() {
}

public static synchronized void registerTerminal() {
AddTerminalEvent.register(event -> {
var terminalName = ETMenuType.ET_TERMINAL.getWTIdAsString();
event.addTerminal(
terminalName,
ETWTHost::new,
ETWTMenu.TYPE,
WTItems.WIRELESS_ET_TERMINAL.asItem(),
terminalName,
"item.extendedterminal.wireless_et_terminal");
});
}
}
2 changes: 0 additions & 2 deletions src/main/java/me/myogoo/extendedterminal/init/wt/WTItems.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@
import me.myogoo.extendedterminal.ExtendedTerminal;
import me.myogoo.extendedterminal.init.ETItems;
import me.myogoo.extendedterminal.item.wtitem.ETWTItem;
import me.myogoo.myotus.api.annotation.wt.AE2WTLib;
import me.myogoo.myotus.util.mod.ModIntegrationManager;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.Item;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ public RecipeType<CraftingRecipe> getRecipeType() {

boolean craftMissing = AbstractContainerScreen.hasControlDown();
List<IRecipeSlotView> inputSlots = recipeSlots.getSlotViews(RecipeIngredientRole.INPUT);
var slotToIngredientMap = ETCraftingRecipeTransferHelper.getGuiSlotToIngredientMap(menu, recipe);
var slotToIngredientMap = ETCraftingRecipeTransferHelper.getJeiDisplaySlotToIngredientMap(recipe);
var missingSlots = menu.findMissingIngredients(slotToIngredientMap);
if (!slotToIngredientMap.isEmpty() && missingSlots.missingSlots().size() == slotToIngredientMap.size()) {
var missingSlotViews = missingSlots.missingSlots().stream()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,13 @@
import appeng.menu.me.common.GridInventoryEntry;
import me.myogoo.extendedterminal.menu.extendedterminal.ETTerminalMenu;
import net.minecraft.core.NonNullList;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.CraftingRecipe;
import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.item.crafting.ShapedRecipe;
import org.jetbrains.annotations.Nullable;

import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

public final class ETCraftingRecipeTransferHelper {
Expand All @@ -30,7 +28,7 @@ public static Map<Integer, Ingredient> getGuiSlotToIngredientMap(ETTerminalMenu
int gridWidth = menu.getCraftingGridWidth();
int recipeWidth = recipe instanceof ShapedRecipe shapedRecipe ? shapedRecipe.getWidth() : gridWidth;

var result = new HashMap<Integer, Ingredient>(ingredients.size());
var result = new LinkedHashMap<Integer, Ingredient>(ingredients.size());
for (int i = 0; i < ingredients.size(); i++) {
int guiSlot = (i / recipeWidth) * gridWidth + (i % recipeWidth);
var ingredient = ingredients.get(i);
Expand All @@ -41,6 +39,62 @@ public static Map<Integer, Ingredient> getGuiSlotToIngredientMap(ETTerminalMenu
return result;
}

public static Map<Integer, Ingredient> getJeiDisplaySlotToIngredientMap(CraftingRecipe recipe) {
var ingredients = recipe.getIngredients();

int width, height;
if (recipe instanceof ShapedRecipe shapedRecipe) {
width = shapedRecipe.getWidth();
height = shapedRecipe.getHeight();
} else {
if (ingredients.size() > 4) {
width = height = 3;
} else if (ingredients.size() > 1) {
width = height = 2;
} else {
width = height = 1;
}
}

var result = new LinkedHashMap<Integer, Ingredient>(ingredients.size());
for (int i = 0; i < ingredients.size(); i++) {
int guiSlot = getCraftingIndex(i, width, height);
var ingredient = ingredients.get(i);
if (!ingredient.isEmpty()) {
result.put(guiSlot, ingredient);
}
}
return result;
}

private static int getCraftingIndex(int i, int width, int height) {
int index;
if (width == 1) {
if (height == 3) {
index = (i * 3) + 1;
} else if (height == 2) {
index = (i * 3) + 1;
} else {
index = 4;
}
} else if (height == 1) {
index = i + 3;
} else if (width == 2) {
index = i;
if (i > 1) {
index++;
if (i > 3) {
index++;
}
}
} else if (height == 2) {
index = i + 3;
} else {
index = i;
}
return index;
}

public static void performTransfer(ETTerminalMenu menu, CraftingRecipe recipe,
boolean craftMissing) {
var ingredientPriorities = EncodingHelper.getIngredientPriorities(menu, ENTRY_COMPARATOR);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import me.myogoo.extendedterminal.menu.slot.ETCraftingBaseSlot;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.inventory.CraftingContainer;
import net.minecraft.world.inventory.DataSlot;
Expand Down Expand Up @@ -253,6 +254,27 @@ public void doAction(ServerPlayer player, InventoryAction action, int slot, long
super.doAction(player, action, slot, id);
}

@Override
public ItemStack quickMoveStack(Player player, int idx) {
if (isServerSide() && idx >= 0 && idx < this.slots.size() && this.getSlot(idx) == this.anvilOutputSlot) {
ItemStack before = this.anvilOutputSlot.getItem().copy();
if (!before.isEmpty() && this.anvilOutputSlot.mayPickup(player)) {
int beforeCount = before.getCount();
super.quickMoveStack(player, idx);

ItemStack after = this.anvilOutputSlot.getItem();
int afterCount = after.isEmpty() ? 0 : after.getCount();
if (afterCount < beforeCount) {
ItemStack taken = before.copy();
taken.setCount(beforeCount - afterCount);
this.anvilOutputSlot.onTake(player, taken);
}
return ItemStack.EMPTY;
}
}
return super.quickMoveStack(player, idx);
}

private void updateCraftingOutput(boolean forceUpdate) {
if (checkCraftingOnlyActive()) {
return;
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/assets/extendedterminal/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

"item.extendedterminal.et_terminal": "Extended Terminal",
"item.extendedterminal.wireless_et_terminal": "Wireless Extended Terminal",
"key.ae2.wireless_wireless_et_terminal_terminal": "Wireless Extended Terminal",
"key.ae2.wireless_et_terminal": "Open Wireless Extended Terminal",

"item.extendedterminal.basic_terminal": "Basic Extended Crafting Terminal",
"item.extendedterminal.advanced_terminal": "Advanced Extended Crafting Terminal",
Expand Down
Loading