Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Colony expedition system #10113

Closed
wants to merge 123 commits into from
Closed
Changes from 1 commit
Commits
Show all changes
123 commits
Select commit Hold shift + click to select a range
88ce1d8
Temp
Thodor12 Jan 14, 2024
da9e661
Finish off visitor type system
Thodor12 Jan 15, 2024
916d80d
Merge branch 'version/main' into feature/visitor_types
Thodor12 Jan 15, 2024
35c7eb2
Final
Thodor12 Jan 15, 2024
513380e
Fix
Thodor12 Jan 15, 2024
1d61cd2
Merge branch 'version/main' into feature/visitor_types
Thodor12 Jan 17, 2024
5ca75e1
Fixes
Thodor12 Jan 17, 2024
871f59f
Port expeditions
Thodor12 Jan 20, 2024
c0b2b71
Lot of fixes
Thodor12 Jan 25, 2024
3fefe0f
Temp
Thodor12 Jan 28, 2024
9719e45
Merge branch 'version/main' into feature/visitor_types
Thodor12 Jan 28, 2024
74a655a
Move
Thodor12 Jan 28, 2024
c309ff5
Merge branch 'feature/visitor_types' into feature/colony_expeditions_120
Thodor12 Jan 28, 2024
06bb8cb
Move
Thodor12 Jan 28, 2024
1cb0b13
Merge branch 'version/main' into feature/colony_expeditions_120
Thodor12 Feb 4, 2024
63e435e
Fixes
Thodor12 Feb 4, 2024
3abacb1
Merge branch 'version/main' into feature/visitor_types
Thodor12 Feb 4, 2024
ab04bb8
Fix
Thodor12 Feb 4, 2024
3f5a362
Merge branch 'feature/visitor_types' into feature/colony_expeditions_120
Thodor12 Feb 4, 2024
99a600d
Merge branch 'version/main' into feature/visitor_types
Thodor12 Feb 4, 2024
90771e4
Temp
Thodor12 Feb 14, 2024
6be5771
Merge branch 'version/main' into feature/colony_expeditions_120
Thodor12 Feb 14, 2024
9fe28ba
Merge branch 'version/main' into feature/visitor_types
Thodor12 Feb 14, 2024
befff5c
Temp
Thodor12 Feb 15, 2024
af5148f
Updates
Thodor12 Feb 16, 2024
696725d
Merge branch 'version/main' into feature/colony_expeditions_120
Thodor12 Feb 19, 2024
506a9c3
Merge branch 'version/main' into feature/visitor_types
Thodor12 Feb 19, 2024
d1cc472
Expedition spawning works
Thodor12 Feb 20, 2024
ac9b1ec
Merge branch 'version/main' into feature/colony_expeditions_120
Thodor12 Feb 23, 2024
78ba4c2
Merge branch 'version/main' into feature/colony_expeditions_120
Thodor12 Feb 28, 2024
aa2602c
Starting expeditions fully functional
Thodor12 Mar 1, 2024
e247aca
Merge branch 'version/main' into feature/colony_expeditions_120
Thodor12 Mar 3, 2024
78f2231
Ending expeditions
Thodor12 Mar 5, 2024
0d4f7d4
Start townhall UI
Thodor12 Mar 9, 2024
9778f15
Merge branch 'version/main' into feature/visitor_types
Thodor12 Mar 9, 2024
27cbc57
Merge branch 'feature/visitor_types' into feature/colony_expeditions_120
Thodor12 Mar 9, 2024
45c3eda
Merge branch 'version/main' into feature/colony_expeditions_120
Thodor12 Mar 13, 2024
96d5697
Update
Thodor12 Mar 14, 2024
04c4bce
Updates to GUI
Thodor12 Mar 14, 2024
260673e
Start of the details for expeditions
Thodor12 Mar 15, 2024
254dd9f
Merge branch 'version/main' into feature/colony_expeditions_120
Thodor12 Mar 17, 2024
03b0a95
Updates
Thodor12 Mar 17, 2024
b2a7ff7
Merge branch 'version/main' into feature/colony_expeditions_120
Thodor12 Mar 19, 2024
c9400d1
Merge branch 'version/main' into feature/colony_expeditions_120
Thodor12 Mar 20, 2024
56c4122
Updates
Thodor12 Mar 26, 2024
25e0403
Member serialization fixes
Thodor12 Mar 28, 2024
4e291e7
Scaling mob fights and better structure handling
Thodor12 Mar 28, 2024
266045a
Merge branch 'version/main' into feature/colony_expeditions_120
Thodor12 Apr 2, 2024
13d17ef
Updates
Thodor12 Apr 18, 2024
305e415
Merge branch 'refs/heads/version/main' into feature/colony_expedition…
Thodor12 Apr 18, 2024
9ed0e49
Fix
Thodor12 Apr 18, 2024
4a44137
Fixes
Thodor12 Apr 18, 2024
b725644
Fixes
Thodor12 Apr 18, 2024
f05b86f
Imports
Thodor12 Apr 18, 2024
1249aa3
Undo custom texture visitor data
Thodor12 Apr 18, 2024
e532f0b
Update
Thodor12 Apr 24, 2024
ec15ca6
Update
Thodor12 May 6, 2024
590cde6
Merge branch 'refs/heads/version/main' into feature/colony_expedition…
Thodor12 May 9, 2024
ec1f490
Update
Thodor12 May 12, 2024
f587a82
Update interaction with expedition sheet
Thodor12 Jun 2, 2024
ac7a34e
Fix interaction with guards list
Thodor12 Jun 10, 2024
7e6734f
Merge branch 'refs/heads/version/main' into feature/colony_expedition…
Thodor12 Jun 10, 2024
722327b
Fixes
Thodor12 Jun 10, 2024
a642571
Merge branch 'refs/heads/version/main' into feature/colony_expedition…
Thodor12 Jun 15, 2024
c5343d9
Updates
Thodor12 Jun 16, 2024
d17e795
Fixes
Thodor12 Jun 16, 2024
95d8bae
Create datagenerators
Thodor12 Jun 16, 2024
79ac2b7
Update datagenerators
Thodor12 Jun 20, 2024
56d0e79
Merge branch 'refs/heads/version/main' into feature/colony_expedition…
Thodor12 Jun 20, 2024
9f4f902
Fixes
Thodor12 Jul 2, 2024
03850b5
Start filling loot tables
Thodor12 Jul 16, 2024
51ff3cd
Merge branch 'refs/heads/version/main' into feature/colony_expedition…
Thodor12 Jul 16, 2024
0455b53
Merge branch 'refs/heads/version/main' into feature/colony_expedition…
Thodor12 Jul 21, 2024
b94ca33
Allow expedition difficulty as a loot param
Thodor12 Jul 21, 2024
75f9b47
First 5 structure loot tables
Thodor12 Jul 22, 2024
7337972
Mansion loot table
Thodor12 Jul 22, 2024
7a76cab
Allow several structures in a row not to create new stages and armor …
Thodor12 Jul 29, 2024
0af7e24
Removed luck from impacting loot tables, created and modified a bunch…
Thodor12 Jul 31, 2024
013aea7
Merge branch 'refs/heads/version/main' into feature/colony_expedition…
Thodor12 Aug 1, 2024
2af0eaf
Fix
Thodor12 Aug 1, 2024
9c4028d
Merge branch 'refs/heads/version/main' into feature/colony_expedition…
Thodor12 Aug 6, 2024
36e438b
Lots more loot tables
Thodor12 Aug 6, 2024
8771b0f
Add ruined portal, remove qualities
Thodor12 Aug 8, 2024
770b99b
Last structure loot tables
Thodor12 Aug 11, 2024
33db988
Remove ocean ruins
Thodor12 Aug 11, 2024
92c0de9
Revert build.gradle
Thodor12 Aug 12, 2024
08b7a6d
Merge branch 'version/main' into feature/colony_expeditions_120
Thodor12 Aug 12, 2024
cd40c92
Merge branch 'version/main' into feature/colony_expeditions_120
Thodor12 Aug 12, 2024
6c0bff5
Update datagen (please don't bork everything)
Thodor12 Aug 12, 2024
40e6362
Fix datagen
Thodor12 Aug 12, 2024
9a0edf9
Undo
Thodor12 Aug 12, 2024
a993b86
Undo
Thodor12 Aug 12, 2024
9c5d382
Javadoc
Thodor12 Aug 12, 2024
d5f1abd
Javadoc
Thodor12 Aug 12, 2024
1f97eea
Remove
Thodor12 Aug 12, 2024
a7df0e2
Undo
Thodor12 Aug 12, 2024
d8a0aca
Undo
Thodor12 Aug 12, 2024
e9a8d20
Update
Thodor12 Aug 12, 2024
d471237
Undo
Thodor12 Aug 12, 2024
7035705
Undo
Thodor12 Aug 12, 2024
83c54ab
Update
Thodor12 Aug 12, 2024
f663160
Rename
Thodor12 Aug 12, 2024
9b122e9
Javadoc
Thodor12 Aug 12, 2024
fd8ec6d
Javadoc
Thodor12 Aug 12, 2024
059aecd
Javadoc and update
Thodor12 Aug 12, 2024
9be0990
Allow void input materials
Thodor12 Aug 12, 2024
15340bb
Start generation of expedition loot tables themselves + fixes
Thodor12 Aug 13, 2024
bdef08f
Update expedition difficulty param to support multiple difficulties a…
Thodor12 Aug 15, 2024
d66de15
Start generation of expedition loot tables
Thodor12 Aug 15, 2024
317d1a3
Merge branch 'version/main' into feature/colony_expeditions_120
Thodor12 Aug 18, 2024
0f2aaa0
Merge branch 'version/main' into feature/colony_expeditions_120
Thodor12 Aug 26, 2024
f5056f7
Updates
Thodor12 Aug 26, 2024
bd6afc1
Updates
Thodor12 Sep 5, 2024
68de0c7
Add textures
Thodor12 Sep 5, 2024
b966114
Merge branch 'version/main' into feature/colony_expeditions_120
Thodor12 Sep 6, 2024
3975fa7
Updates
Thodor12 Sep 7, 2024
7760b64
Merge branch 'version/main' into feature/colony_expeditions_120
Thodor12 Sep 9, 2024
11dfee5
Merge branch 'version/main' into feature/colony_expeditions_120
Thodor12 Sep 12, 2024
ed5f875
Bugfixes
Thodor12 Sep 12, 2024
bde7c2f
Improve setup
Thodor12 Sep 15, 2024
bb5a8a0
Merge branch 'version/main' into feature/colony_expeditions_120
Thodor12 Sep 15, 2024
4c06816
Conversion to equipment type from tool type
Thodor12 Sep 15, 2024
e015f9f
Merge branch 'version/main' into feature/colony_expeditions_120
Thodor12 Sep 29, 2024
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
Prev Previous commit
Next Next commit
Start of the details for expeditions
Thodor12 committed Mar 15, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
commit 260673eb9a5b6aa8a829ca65aaa11e9704624388
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
package com.minecolonies.core.client.gui.townhall;

import com.ldtteam.blockui.Pane;
import com.ldtteam.blockui.controls.Button;
import com.ldtteam.blockui.controls.ButtonHandler;
import com.ldtteam.blockui.controls.ButtonImage;
import com.ldtteam.blockui.controls.Text;
import com.ldtteam.blockui.controls.*;
import com.ldtteam.blockui.views.Box;
import com.ldtteam.blockui.views.ScrollingList;
import com.ldtteam.blockui.views.ScrollingList.DataProvider;
import com.ldtteam.blockui.views.View;
import com.minecolonies.api.colony.IColonyView;
import com.minecolonies.api.colony.colonyEvents.EventStatus;
import com.minecolonies.api.util.constant.Constants;
import com.minecolonies.core.client.gui.AbstractWindowSkeleton;
import com.minecolonies.core.colony.ColonyView;
@@ -17,6 +16,7 @@
import com.minecolonies.core.colony.expeditions.colony.ColonyExpeditionTypeManager;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.world.item.ItemStack;
import org.jetbrains.annotations.Nullable;

import java.util.List;
@@ -42,6 +42,14 @@ public class WindowTownHallExpeditions extends AbstractWindowSkeleton implements
private static final String LABEL_EXPEDITION_NAME = "expedition_name";
private static final String LABEL_EXPEDITION_STATUS = "expedition_status";
private static final String BUTTON_EXPEDITION_OPEN = "expedition_open";
private static final String LABEL_EMPTY = "empty_text";
private static final String VIEW_EXPEDITION_DETAILS = "expedition_details";
private static final String LIST_EXPEDITION_ITEMS = "expedition_items";

/**
* The amount of item icons showing on a single list row.
*/
private static final int ITEMS_PER_ROW = 9;

/**
* The client side colony data
@@ -58,6 +66,9 @@ public class WindowTownHallExpeditions extends AbstractWindowSkeleton implements
*/
private final ScrollingList finishedExpeditionsList;

/**
* The current opened expedition data.
*/
@Nullable
private OpenedExpeditionInfo openedExpedition;

@@ -77,6 +88,7 @@ public WindowTownHallExpeditions(final IColonyView colony)
setupExpeditionList(finishedExpeditionsList, colony.getExpeditionManager()::getFinishedExpeditions, false);

registerButton(BUTTON_EXPEDITION_OPEN, this::openExpedition);
updateOpenedExpedition();
}

/**
@@ -139,6 +151,66 @@ private void openExpedition(final Button button)
{
openedExpedition = new OpenedExpeditionInfo(colony.getExpeditionManager().getFinishedExpeditions().get(finishedListIndex), finishedListIndex, false);
}

updateOpenedExpedition();
}

/**
* Updates the pane on the right to view the opened expedition.
*/
private void updateOpenedExpedition()
{
findPaneOfTypeByID(LABEL_EMPTY, Text.class).setEnabled(openedExpedition == null);
findPaneOfTypeByID(LABEL_EMPTY, Text.class).setVisible(openedExpedition == null);

final View detailsContainer = findPaneOfTypeByID(VIEW_EXPEDITION_DETAILS, View.class);
detailsContainer.setEnabled(openedExpedition != null);
detailsContainer.setVisible(openedExpedition != null);

if (openedExpedition != null)
{
final ColonyExpeditionType expeditionType = ColonyExpeditionTypeManager.getInstance().getExpeditionType(openedExpedition.instance.getExpeditionTypeId());
if (expeditionType == null)
{
return;
}

detailsContainer.findPaneOfTypeByID(LABEL_EXPEDITION_NAME, Text.class).setText(expeditionType.getName());

final MutableComponent statusComponent =
Component.translatable(EXPEDITION_TOWNHALL_LIST_STATUS + openedExpedition.instance.getStatus().name())
.withStyle(openedExpedition.instance.getStatus().getStatusType().getDisplayColor());
detailsContainer.findPaneOfTypeByID(LABEL_EXPEDITION_STATUS, Text.class).setText(statusComponent);

if (openedExpedition.instance.getStatus().getEventStatus().equals(EventStatus.DONE))
{
final ScrollingList itemsList = detailsContainer.findPaneOfTypeByID(LIST_EXPEDITION_ITEMS, ScrollingList.class);
itemsList.setDataProvider(new DataProvider()
{
@Override
public int getElementCount()
{
return (int) Math.ceil(openedExpedition.instance.getEquipment().size() / (double) ITEMS_PER_ROW);
}

@Override
public void updateElement(final int i, final Pane pane)
{
for (int colIndex = 0; colIndex < ITEMS_PER_ROW; colIndex++)
{
final int itemIndex = colIndex * (i + 1);
if (openedExpedition.instance.getEquipment().size() <= itemIndex)
{
break;
}

final ItemStack item = openedExpedition.instance.getEquipment().get(itemIndex);
pane.findPaneOfTypeByID("item_" + colIndex, ItemIcon.class).setItem(item);
}
}
});
}
}
}

/**
Original file line number Diff line number Diff line change
@@ -31,7 +31,7 @@ public class Expedition implements IExpedition
* The equipment given to the expedition prior to starting.
*/
@NotNull
protected final Collection<ItemStack> equipment;
protected final List<ItemStack> equipment;

/**
* The members of the expedition.
@@ -47,7 +47,7 @@ public class Expedition implements IExpedition
/**
* The stage of the expedition.
*/
protected ExpeditionStatus status = ExpeditionStatus.CREATED;
protected ExpeditionStatus status;

/**
* Deserialization constructor.
@@ -56,7 +56,7 @@ public class Expedition implements IExpedition
* @param members the members for this expedition.
* @param status the status of the expedition.
*/
public Expedition(final @NotNull Collection<ItemStack> equipment, final @NotNull Collection<IExpeditionMember<?>> members, final ExpeditionStatus status)
public Expedition(final @NotNull List<ItemStack> equipment, final @NotNull List<IExpeditionMember<?>> members, final ExpeditionStatus status)
{
this.equipment = equipment;
this.members = members.stream().collect(Collectors.toMap(IExpeditionMember::getId, v -> v));
@@ -113,30 +113,30 @@ public void setStatus(final ExpeditionStatus stage)

@Override
@NotNull
public Collection<IExpeditionMember<?>> getMembers()
public List<IExpeditionMember<?>> getMembers()
{
return this.members.values();
return this.members.values().stream().toList();
}

@Override
@NotNull
public Collection<ItemStack> getEquipment()
public List<ItemStack> getEquipment()
{
return equipment;
}

@Override
@NotNull
public Collection<IExpeditionMember<?>> getActiveMembers()
public List<IExpeditionMember<?>> getActiveMembers()
{
return this.members.values().stream().filter(f -> !f.isDead()).toList();
}

@Override
@NotNull
public Collection<IExpeditionStage> getResults()
public List<IExpeditionStage> getResults()
{
return Collections.unmodifiableCollection(this.results);
return this.results.stream().toList();
}

@Override
Original file line number Diff line number Diff line change
@@ -14,7 +14,6 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.Collection;
import java.util.Comparator;
import java.util.List;

@@ -59,8 +58,8 @@ public final class ColonyExpedition extends Expedition
* @param expeditionTypeId the expedition type.
*/
public ColonyExpedition(
final @NotNull Collection<ItemStack> equipment,
final @NotNull Collection<IExpeditionMember<?>> members,
final @NotNull List<ItemStack> equipment,
final @NotNull List<IExpeditionMember<?>> members,
final @NotNull ExpeditionStatus status,
final int id,
final @NotNull ResourceKey<Level> dimensionId,
Original file line number Diff line number Diff line change
@@ -60,6 +60,32 @@
color="black"
textscale="0.8"
textalign="MIDDLE"/>

<view id="expedition_details" size="100% 100%">
<text id="expedition_name" size="100% 15" color="black"/>
<text id="expedition_status" pos="0 15" size="100% 15" color="black" textscale="0.8"/>

<text pos="0 40" size="100% 15" text="$(com.minecolonies.core.expedition.gui.townhall.header_items)" color="black"/>
<box pos="0 55" size="100% 20" linewidth="1">
<list id="expedition_items"
size="100% 100%"
emptytext="$(com.minecolonies.core.expedition.gui.townhall.empty_list_finished)"
emptyscale="0.8"
emptycolor="black">
<view size="100% 20">
<itemicon id="item_0" pos="2 2" size="16 16"/>
<itemicon id="item_1" pos="21 2" size="16 16"/>
<itemicon id="item_2" pos="40 2" size="16 16"/>
<itemicon id="item_3" pos="59 2" size="16 16"/>
<itemicon id="item_4" pos="78 2" size="16 16"/>
<itemicon id="item_5" pos="97 2" size="16 16"/>
<itemicon id="item_6" pos="116 2" size="16 16"/>
<itemicon id="item_7" pos="135 2" size="16 16"/>
<itemicon id="item_8" pos="154 2" size="16 16"/>
</view>
</list>
</box>
</view>
</view>
</view>
</window>
2 changes: 2 additions & 0 deletions src/main/resources/assets/minecolonies/lang/manual_en_us.json
Original file line number Diff line number Diff line change
@@ -2600,6 +2600,8 @@
"com.minecolonies.core.expedition.gui.townhall.header": "Expeditions Overview",
"com.minecolonies.core.expedition.gui.townhall.header_active": "Active Expeditions",
"com.minecolonies.core.expedition.gui.townhall.header_finished": "Previous Expeditions",
"com.minecolonies.core.expedition.gui.townhall.header_items": "Items",
"com.minecolonies.core.expedition.gui.townhall.header_results": "Results",
"com.minecolonies.core.expedition.gui.townhall.empty_list_active": "No active expeditions.",
"com.minecolonies.core.expedition.gui.townhall.empty_list_finished": "No previous expeditions.",
"com.minecolonies.core.expedition.gui.townhall.expedition_list.to_text": "To %s",