Skip to content

Commit eb59b9b

Browse files
committed
Advanced Clipboard: Complete
1 parent e8456c9 commit eb59b9b

File tree

5 files changed

+88
-9
lines changed

5 files changed

+88
-9
lines changed

build.gradle

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,15 @@ dependencies {
123123
compileOnly name: 'minecolonies-0.0.11-1.21.1alpha' // use the actual filename without .jar
124124
localRuntime files('../Minecolonies/build/libs/minecolonies-1.21.1-ALPHA.jar')
125125

126-
compileOnly 'com.ldtteam:blockui:1.0.192-1.21.1-snapshot' // use the actual filename without .jar
126+
compileOnly name: 'blockui-1.0.199-1.21.1-snapshot' // use the actual filename without .jar
127+
localRuntime files('../Minecolonies/build/libs/blockui-1.0.199-1.21.1-snapshot')
128+
129+
compileOnly name: 'structurize-1.0.773-1.21.1-snapshot' // use the actual filename without .jar
130+
localRuntime files('../Minecolonies/build/libs/structurize-1.0.773-1.21.1-snapshot')
131+
132+
compileOnly name: 'domum-ornamentum-1.0.213-snapshot-main' // use the actual filename without .jar
133+
localRuntime files('../Minecolonies/build/libs/domum-ornamentum-1.0.213-snapshot-maint')
134+
127135
}
128136

129137
// This block of code expands all declared replace properties in the specified resource targets.

src/main/java/com/deathfrog/mctradepost/gui/AdvancedWindowClipBoard.java

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,41 @@ protected boolean isPlayerRequest(final IRequest<?> request)
112112
return isPlayer;
113113
}
114114

115+
protected void addToFilteredRequests(IRequestManager manager, ArrayList<IRequest<?>> filteredRequests, IRequest<?> request)
116+
{
117+
if (isPlayerRequest(request)) {
118+
filteredRequests.add(request);
119+
}
120+
121+
if (request.hasChildren()) {
122+
123+
for (final Object o : request.getChildren())
124+
{
125+
if (o instanceof IToken<?>)
126+
{
127+
final IToken<?> iToken = (IToken<?>) o;
128+
final IRequest<?> childRequest = manager.getRequestForToken(iToken);
129+
130+
if (childRequest != null)
131+
{
132+
addToFilteredRequests(manager, filteredRequests, childRequest);
133+
}
134+
}
135+
}
136+
}
137+
}
138+
139+
protected ArrayList<IRequest<?>> filterRequests(IRequestManager manager, IBuildingView buildingView, ArrayList<IRequest<?>> requests)
140+
{
141+
final ArrayList<IRequest<?>> filteredRequests = Lists.newArrayList();
142+
143+
requests.forEach(request -> {
144+
addToFilteredRequests(manager, filteredRequests, request);
145+
});
146+
147+
return filteredRequests;
148+
}
149+
115150
@Override
116151
public ImmutableList<IRequest<?>> getOpenRequestsFromBuilding(final IBuildingView building)
117152
{
@@ -161,7 +196,9 @@ public ImmutableList<IRequest<?>> getOpenRequestsFromBuilding(final IBuildingVie
161196

162197
// Advanced clipboard functionality - only show requests to be fulfilled by the player
163198
if (playerOnly) {
164-
requests.removeIf(req -> !isPlayerRequest(req));
199+
final ArrayList<IRequest<?>> filteredRequests = filterRequests(requestManager, building, requests);
200+
requests.clear();
201+
requests.addAll(filteredRequests);
165202
}
166203

167204
final BlockPos playerPos = Minecraft.getInstance().player.blockPosition();

src/main/java/com/deathfrog/mctradepost/item/AdvancedClipboardItem.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,22 @@
55
import com.deathfrog.mctradepost.gui.AdvancedWindowClipBoard;
66
import com.minecolonies.api.colony.IColonyView;
77
import com.minecolonies.api.items.component.ColonyId;
8+
import com.minecolonies.api.util.MessageUtils;
89
import com.minecolonies.api.util.constant.TranslationConstants;
910
import com.minecolonies.core.items.ItemClipboard;
11+
import com.minecolonies.core.tileentities.TileEntityColonyBuilding;
1012

1113
import net.minecraft.network.chat.Component;
1214
import net.minecraft.world.InteractionHand;
1315
import net.minecraft.world.InteractionResult;
1416
import net.minecraft.world.InteractionResultHolder;
1517
import net.minecraft.world.entity.player.Player;
1618
import net.minecraft.world.item.ItemStack;
19+
import net.minecraft.world.item.context.UseOnContext;
1720
import net.minecraft.world.level.Level;
21+
import net.minecraft.world.level.block.entity.BlockEntity;
22+
23+
import static com.minecolonies.api.util.constant.TranslationConstants.COM_MINECOLONIES_CLIPBOARD_COLONY_SET;
1824

1925
public class AdvancedClipboardItem extends ItemClipboard {
2026

@@ -48,6 +54,32 @@ public InteractionResultHolder<ItemStack> use(
4854
return new InteractionResultHolder<>(InteractionResult.SUCCESS, clipboard);
4955
}
5056

57+
@Override
58+
@NotNull
59+
public InteractionResult useOn(final UseOnContext ctx)
60+
{
61+
final ItemStack clipboard = ctx.getPlayer().getItemInHand(ctx.getHand());
62+
63+
final BlockEntity entity = ctx.getLevel().getBlockEntity(ctx.getClickedPos());
64+
65+
if (entity instanceof TileEntityColonyBuilding buildingEntity)
66+
{
67+
buildingEntity.writeColonyToItemStack(clipboard);
68+
69+
if (!ctx.getLevel().isClientSide)
70+
{
71+
MessageUtils.format(COM_MINECOLONIES_CLIPBOARD_COLONY_SET, buildingEntity.getColony().getName()).sendTo(ctx.getPlayer());
72+
}
73+
}
74+
else if (ctx.getLevel().isClientSide)
75+
{
76+
openWindow(clipboard, ctx.getLevel(), ctx.getPlayer());
77+
}
78+
79+
return InteractionResult.SUCCESS;
80+
}
81+
82+
5183
/**
5284
* Opens the clipboard window if there is a valid colony linked
5385
* @param stack the item

src/main/resources/assets/mctradepost/gui/advancedwindowclipboard.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<text size="158 11" pos="16 28" textalign="MIDDLE" color="black"
66
label="$(com.minecolonies.coremod.gui.citizen.requests)"/>
77
<button id="important" size="14 15" pos="150 23" color="red" label="!" tooltip="$(com.minecolonies.coremod.gui.request.hideshow)" source="minecolonies:textures/gui/builderhut/builder_button_mini.png"/>
8-
<button id="playeronly" size="14 15" pos="130 23" color="red" label="P" tooltip="View only requests expected to be fulfilled by a player." source="minecolonies:textures/gui/builderhut/builder_button_mini.png"/>
8+
<button id="playeronly" size="14 15" pos="135 23" color="red" label="P" tooltip="View only requests expected to be fulfilled by a player." source="minecolonies:textures/gui/builderhut/builder_button_mini.png"/>
99
<list id="requests" size="158 184" pos="16 44">
1010
<box id="requestx" size="100% 40" linewidth="1">
1111
<layout source="minecolonies:gui/layouthuts/layoutrequeststree.xml"/>

src/main/resources/data/mctradepost/recipes/advanced_clipboard.json renamed to src/main/resources/data/mctradepost/recipe/advanced_clipboard.json

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
{
22
"type": "minecraft:crafting_shaped",
3-
"pattern": [
4-
"WPW",
5-
"LBL",
6-
" W "
7-
],
3+
"category": "equipment",
84
"key": {
95
"W": { "item": "minecraft:paper" },
106
"P": { "item": "minecraft:iron_ingot" },
117
"L": { "item": "minecraft:leather" },
128
"B": { "item": "minecolonies:clipboard" }
139
},
10+
"pattern": [
11+
"WPW",
12+
"LBL",
13+
" W "
14+
],
1415
"result": {
15-
"item": "mctradepost:advanced_clipboard"
16+
"count": 1,
17+
"id": "mctradepost:advanced_clipboard"
1618
}
1719
}
1820

0 commit comments

Comments
 (0)