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

1.19.2 1.0.11-alpha #189

Merged
merged 8 commits into from
Dec 4, 2024
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
88 changes: 36 additions & 52 deletions TODO.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,88 +9,72 @@



Wave Survival 0.4
-----------------
[🟡] Enemy units no longer try to attack bridges or pile up near them
[🟡] Provide 50% refund for deleting a completed building (scaled to how damaged it is)

[❌] In wave survival, teams randomly switch
[🟡] Ranged units no longer pile up inside buildings

[🟡] Wave difficulty is advanced on each night regardless of if you cleared the previous wave or not
[🟡] The spawn warning is now only shown if less than the expected number of units spawned
- If you see one of these warnings, please open a bug report and show a screenshot of your world

[🟡] Added another debug option:
- /debug-next-night - advances to the next night and wave


Portal fixes
------------
[🟡] Reduced portal count from 1/2 to 1/3 of wave number but with the same total population each wave
[🟡] Portals can no longer spawn over water (but they can still spawn on land across water)
[🟡] Portals can no longer spawn too close to another portal
[🟡] Piglin waves now have a population cap for units spawned from portals (2x of other waves)
[🟡] Enemy ghasts no longer friendly fire their own portals
Wave Survival 0.4a
------------------
[❌] Enemies from different factions should not attach each other
[❌] Fixed a bug where teams would randomly switch

Features
--------
[🟡] Pathfinding fixes
[🟡] Improved pathfinding accuracy for all units
- Increasing the accuracy also increased server CPU usage, so several optimisations have also been included:
- If the last move command is identical to the current one (same units, same location, etc.) the command is ignored
- When moving far distances (>50 blocks), some commands are ignored if the last move command was to a similar location
- Move commands across water/lava are ignored if the unit would not move as a result (eg. they're stuck at the coast)

[❌] Configurable Unit Costs (Thanks to @DoodleNoodles)
- Includes all costs, population values and build times
- Modify the files generated at configs/reignofnether-config.toml to adjust them
- If the server config is adjusted, this will be enforced for all players joining the match

Bugfixes
--------

[🟡] Spectators can no longer cancel units from RTS players' building queues
- test in lilypad server?
[🟡] Fixed some units randomly spawning as neutral
[🟡] Can no longer enter enemy garrisons
[] Can no longer enter enemy garrisons
- You can still enter allied garrisons
[🟡] Tall grass and barrier blocks are now ignored by the cursor
[] Tall grass and barrier blocks are now ignored by the cursor
[🟡] Only save resource data if the unit was actively gathering
[🟡] Fix weird pathing over magma
[] Fix weird pathing over magma
- To fix this, there is now a new block identical in texture and function to magma called "Walkable Magma"
- @Mapmakers should replace any regular magma blocks in their maps with this block to improve pathfinding

[❌] Fix #localisation channel problems
[❌] Wipe all saved data on /rts-reset

[❌] You no longer have to restart your client to change button languages

Quality of Life
---------------

[❌] If neutralAggro is on, don't aggro allied survival players

[🟡] Reduced volume of the Call To Arms bell when used by villagers

[🟡] Show refund resources popup when cancelling buildings
- consider switching to SC2 system? (flat 75% refund)

[❌] Shift queueing movements and buildings (not just placement)
- Add index to sendCommand packets
- Add recursive field to UnitActionItem: nextActionItem
- OR just add a list queue to each unit
- Add end detections in goals for when to move to nextActionItem
- Add clientside checkpoints

[❌] Must restart client when switching languages for it to take effect
- Should do configs first
[✔] Units now attack survival players automatically when idle or attack-moving (except if allied)
[✔] Reduced volume of the Call To Arms bell when used by villagers
[✔] Cancelling an unfinished building now shows a resource popup for the refund
[✔] You can now right-click the build/repair button to have workers auto-repair nearby buildings

[❌] /gamerule groundYLevel for mapmakers
- Maybe separate for ghasts and bridges?

[❌] Right click to autocast repair on workers


Balancing
---------
[❌] De-RNG farm growth, and properly measure their output for balancing

[✔] Farm growth is no longer random
[🟡] Capitols after the first take twice as long to build
[✔] All Capitols: +50 wood, +100 ore (starting resources adjusted accordingly)

Monsters:
[✔] Wardens: +25 food, +10s, +1 pop
[✔] Spiders & Poison Spiders: +1 dmg
[✔] Pumpkins now take +1s to gather, and give -1 food


[🟡] Capitols after the first take twice as long to build
[🟡] All Capitols: +50 wood, +100 ore (starting resources adjusted accordingly)


Languages
---------
NEW:
"block.reignofnether.walkable_magma_block": "Walkable Magma",
"buildings.monsters.reignofnether.mausoleum.tooltip3": "Only one capitol can produce workers at any given time.",
"buildings.monsters.reignofnether.central_portal.tooltip2": "Only one capitol can produce workers at any given time.",
"buildings.monsters.reignofnether.town_centre.tooltip2": "Only one capitol can produce workers at any given time.",
"block.reignofnether.walkable_magma_block": "Walkable Magma",
"hud.actionbuttons.reignofnether.build_repair_autocast": "(Right-click to auto-repair)",
7 changes: 7 additions & 0 deletions TODO_backlog.txt
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,13 @@ Bugfixes
Quality of Life Features
------------------------

[❌] Shift queueing movements and buildings (not just placement)
- Add index to sendCommand packets
- Add recursive field to UnitActionItem: nextActionItem
- OR just add a list queue to each unit
- Add end detections in goals for when to move to nextActionItem
- Add clientside checkpoints

[❌] Save transport portal links between server restarts

[❌] Flatten terrain ability
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,10 +82,10 @@ public void use(Level level, Building buildingUsing, BlockPos targetBp) {
vUnit.callToArmsGoal.setNearestTownCentreAsTarget();
}

if (level.isClientSide()) {
SoundClientEvents.playSoundAtPos(SoundAction.BELL, buildingUsing.centrePos);
if (!level.isClientSide()) {
SoundClientboundPacket.playSoundAtPos(SoundAction.BELL, buildingUsing.centrePos);
CompletableFuture.delayedExecutor(300, TimeUnit.MILLISECONDS).execute(() -> {
SoundClientEvents.playSoundAtPos(SoundAction.BELL, buildingUsing.centrePos);
SoundClientboundPacket.playSoundAtPos(SoundAction.BELL, buildingUsing.centrePos);
});
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.solegendary.reignofnether.keybinds.Keybinding;
import com.solegendary.reignofnether.sounds.SoundAction;
import com.solegendary.reignofnether.sounds.SoundClientEvents;
import com.solegendary.reignofnether.sounds.SoundClientboundPacket;
import com.solegendary.reignofnether.unit.UnitAction;
import com.solegendary.reignofnether.unit.interfaces.Unit;
import com.solegendary.reignofnether.unit.units.villagers.MilitiaUnit;
Expand All @@ -15,6 +16,7 @@
import net.minecraft.network.chat.Style;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.FormattedCharSequence;
import net.minecraft.world.entity.Mob;
import net.minecraft.world.level.Level;

import java.util.List;
Expand Down Expand Up @@ -63,13 +65,11 @@ public void use(Level level, Unit unitUsing, BlockPos targetBp) {
if (unitUsing instanceof VillagerUnit vUnit)
vUnit.callToArmsGoal.setNearestTownCentreAsTarget();

if (level.isClientSide()) {
if (unitUsing == HudClientEvents.hudSelectedEntity) {
SoundClientEvents.playSoundForLocalPlayer(SoundAction.BELL, 1.0f);
CompletableFuture.delayedExecutor(300, TimeUnit.MILLISECONDS).execute(() -> {
SoundClientEvents.playSoundForLocalPlayer(SoundAction.BELL, 1.0f);
});
}
if (!level.isClientSide()) {
SoundClientboundPacket.playSoundAtPos(SoundAction.BELL, ((Mob) unitUsing).getOnPos(), 0.5f);
CompletableFuture.delayedExecutor(300, TimeUnit.MILLISECONDS).execute(() -> {
SoundClientboundPacket.playSoundAtPos(SoundAction.BELL, ((Mob) unitUsing).getOnPos(), 0.5f);
});
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -472,9 +472,6 @@ public void destroyRandomBlocks(int amount) {
}

public boolean shouldBeDestroyed() {
if (tickAge % 4 == 0) {
return false;
}
if (!this.level.getWorldBorder().isWithinBounds(centrePos)) {
return true;
}
Expand Down Expand Up @@ -706,7 +703,7 @@ public void tick(Level tickLevel) {
if (isBuilt) {
tickAgeAfterBuilt += 1;
}
tickAge = +1;
tickAge += 1;
}

@OnlyIn(Dist.CLIENT)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import com.solegendary.reignofnether.research.ResearchServerEvents;
import com.solegendary.reignofnether.resources.*;
import com.solegendary.reignofnether.survival.SurvivalServerEvents;
import com.solegendary.reignofnether.survival.WavePortal;
import com.solegendary.reignofnether.unit.Relationship;
import com.solegendary.reignofnether.unit.UnitAction;
import com.solegendary.reignofnether.unit.UnitServerEvents;
Expand Down Expand Up @@ -51,8 +50,6 @@
import javax.annotation.Nullable;
import java.util.*;

import static com.solegendary.reignofnether.hud.HudClientEvents.hudSelectedBuilding;

public class BuildingServerEvents {

private static final int BUILDING_SYNC_TICKS_MAX = 20; // how often we send out unit syncing packets
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import com.solegendary.reignofnether.building.buildings.monsters.*;
import com.solegendary.reignofnether.building.buildings.piglins.*;
import com.solegendary.reignofnether.building.buildings.piglins.BlackstoneBridge;
import com.solegendary.reignofnether.building.buildings.monsters.SpruceBridge;
import com.solegendary.reignofnether.building.buildings.villagers.OakStockpile;
import com.solegendary.reignofnether.building.buildings.villagers.OakBridge;
import com.solegendary.reignofnether.building.buildings.villagers.*;
Expand All @@ -20,8 +19,6 @@

import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.function.Predicate;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.solegendary.reignofnether.building.buildings.monsters;

import com.solegendary.reignofnether.building.*;
import com.solegendary.reignofnether.building.buildings.villagers.Blacksmith;
import com.solegendary.reignofnether.hud.AbilityButton;
import com.solegendary.reignofnether.keybinds.Keybinding;
import com.solegendary.reignofnether.keybinds.Keybindings;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@
import com.solegendary.reignofnether.resources.ResourceCost;
import com.solegendary.reignofnether.time.TimeClientEvents;
import com.solegendary.reignofnether.unit.units.monsters.ZombieVillagerProd;
import com.solegendary.reignofnether.hud.AbilityButton;
import com.solegendary.reignofnether.resources.ResourceCosts;
import com.solegendary.reignofnether.unit.units.monsters.ZombieVillagerProd;
import com.solegendary.reignofnether.util.Faction;
import com.solegendary.reignofnether.util.MiscUtil;
import net.minecraft.client.resources.language.I18n;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.solegendary.reignofnether.building.buildings.monsters;

import com.solegendary.reignofnether.building.*;
import com.solegendary.reignofnether.building.buildings.shared.AbstractFarm;
import com.solegendary.reignofnether.hud.AbilityButton;
import com.solegendary.reignofnether.keybinds.Keybinding;
import com.solegendary.reignofnether.research.ResearchClient;
Expand All @@ -23,7 +24,7 @@

import static com.solegendary.reignofnether.building.BuildingUtils.getAbsoluteBlockData;

public class PumpkinFarm extends Building {
public class PumpkinFarm extends AbstractFarm {

public final static String buildingName = "Pumpkin Farm";
public final static String structureName = "pumpkin_farm";
Expand Down Expand Up @@ -76,18 +77,4 @@ public static AbilityButton getBuildButton(Keybinding hotkey) {
null
);
}

@Override
public void tick(Level tickLevel) {
super.tick(tickLevel);
if (!tickLevel.isClientSide()) {
ticksToNextIceCheck -= 1;
if (ticksToNextIceCheck <= 0) {
for (BuildingBlock bb : blocks)
if (tickLevel.getBlockState(bb.getBlockPos()).getBlock() == Blocks.ICE)
tickLevel.setBlockAndUpdate(bb.getBlockPos(), Blocks.WATER.defaultBlockState());
ticksToNextIceCheck = ICE_CHECK_TICKS_MAX;
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import com.solegendary.reignofnether.research.ResearchClient;
import com.solegendary.reignofnether.resources.ResourceCost;
import com.solegendary.reignofnether.resources.ResourceCosts;
import com.solegendary.reignofnether.util.Faction;
import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.language.I18n;
import net.minecraft.core.BlockPos;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,12 @@
import com.solegendary.reignofnether.building.BuildingBlock;
import com.solegendary.reignofnether.building.BuildingBlockData;
import com.solegendary.reignofnether.building.BuildingClientEvents;
import com.solegendary.reignofnether.building.buildings.monsters.Mausoleum;
import com.solegendary.reignofnether.building.buildings.shared.AbstractBridge;
import com.solegendary.reignofnether.building.buildings.villagers.TownCentre;
import com.solegendary.reignofnether.hud.AbilityButton;
import com.solegendary.reignofnether.keybinds.Keybinding;
import com.solegendary.reignofnether.research.ResearchClient;
import com.solegendary.reignofnether.resources.ResourceCost;
import com.solegendary.reignofnether.resources.ResourceCosts;
import com.solegendary.reignofnether.util.Faction;
import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.language.I18n;
import net.minecraft.core.BlockPos;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
package com.solegendary.reignofnether.building.buildings.piglins;

import com.solegendary.reignofnether.building.*;
import com.solegendary.reignofnether.building.buildings.monsters.Dungeon;
import com.solegendary.reignofnether.building.buildings.monsters.Graveyard;
import com.solegendary.reignofnether.building.buildings.monsters.SpiderLair;
import com.solegendary.reignofnether.hud.AbilityButton;
import com.solegendary.reignofnether.keybinds.Keybinding;
import com.solegendary.reignofnether.keybinds.Keybindings;
Expand All @@ -12,7 +9,6 @@
import com.solegendary.reignofnether.research.researchItems.ResearchBloodlust;
import com.solegendary.reignofnether.resources.ResourceCost;
import com.solegendary.reignofnether.resources.ResourceCosts;
import com.solegendary.reignofnether.unit.units.monsters.WardenProd;
import com.solegendary.reignofnether.util.Faction;
import net.minecraft.client.resources.language.I18n;
import net.minecraft.core.BlockPos;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.solegendary.reignofnether.building.BuildingBlock;
import com.solegendary.reignofnether.building.BuildingBlockData;
import com.solegendary.reignofnether.building.BuildingClientEvents;
import com.solegendary.reignofnether.building.buildings.shared.AbstractFarm;
import com.solegendary.reignofnether.hud.AbilityButton;
import com.solegendary.reignofnether.keybinds.Keybinding;
import com.solegendary.reignofnether.research.ResearchClient;
Expand All @@ -26,7 +27,7 @@

import static com.solegendary.reignofnether.building.BuildingUtils.getAbsoluteBlockData;

public class NetherwartFarm extends Building {
public class NetherwartFarm extends AbstractFarm {

public final static String buildingName = "Netherwart Farm";
public final static String structureName = "netherwart_farm";
Expand Down
Loading