Skip to content

Commit

Permalink
Deco block (#3514)
Browse files Browse the repository at this point in the history
Hotfix construction tape placement
Hotfix raider crash
  • Loading branch information
Raycoms committed Mar 27, 2019
1 parent 1530401 commit f1a17c4
Show file tree
Hide file tree
Showing 6 changed files with 79 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -506,9 +506,9 @@ public void deconstruct()
*
* @param newLevel The new level.
*/
@SuppressWarnings("squid:S1172")
public void onUpgradeComplete(final int newLevel)
{
ConstructionTapeHelper.removeConstructionTape(getCorners(), colony.getWorld());
colony.getProgressManager().progressBuildBuilding(this,
colony.getBuildingManager().getBuildings().values().stream()
.filter(building -> building instanceof AbstractBuildingWorker).mapToInt(AbstractSchematicProvider::getBuildingLevel).sum(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import com.ldtteam.structures.helpers.Structure;
import com.ldtteam.structurize.util.PlacementSettings;
import com.minecolonies.api.util.BlockPosUtil;
import com.minecolonies.api.util.BlockUtils;
import com.minecolonies.api.util.Log;
Expand All @@ -15,13 +13,9 @@
import com.minecolonies.coremod.colony.buildings.AbstractBuilding;
import com.minecolonies.coremod.colony.buildings.views.AbstractBuildingView;
import com.minecolonies.coremod.colony.buildings.workerbuildings.*;
import com.minecolonies.coremod.colony.workorders.WorkOrderBuildBuilding;
import com.minecolonies.coremod.entity.ai.citizen.builder.ConstructionTapeHelper;
import com.minecolonies.coremod.tileentities.TileEntityColonyBuilding;
import com.minecolonies.coremod.util.ColonyUtils;
import io.netty.buffer.ByteBuf;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.Tuple;
import net.minecraft.util.math.BlockPos;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
Expand Down Expand Up @@ -237,24 +231,6 @@ public static AbstractBuilding create(final Colony colony, @NotNull final TileEn
{
Log.getLogger().error(String.format("Unknown Building type '%s' or missing constructor of proper format.", parent.getClass().getName()), exception);
}

if (building != null && parent.getWorld() != null && !(building instanceof PostBox))
{
building.setRotation(BlockUtils.getRotationFromFacing(parent.getWorld().getBlockState(parent.getPosition()).getValue(AbstractBlockHut.FACING)));
final WorkOrderBuildBuilding workOrder = new WorkOrderBuildBuilding(building, 1);
final Structure wrapper = new Structure(parent.getWorld(), workOrder.getStructureName(), new PlacementSettings());
final Tuple<Tuple<Integer, Integer>, Tuple<Integer, Integer>> corners
= ColonyUtils.calculateCorners(building.getLocation(),
parent.getWorld(),
wrapper,
workOrder.getRotation(parent.getWorld()),
workOrder.isMirrored());

building.setCorners(corners.getFirst().getFirst(), corners.getFirst().getSecond(), corners.getSecond().getFirst(), corners.getSecond().getSecond());
building.setHeight(wrapper.getHeight());

ConstructionTapeHelper.placeConstructionTape(building.getLocation(), corners, parent.getWorld());
}
return building;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,27 +1,31 @@
package com.minecolonies.coremod.colony.managers;

import com.ldtteam.structures.helpers.Structure;
import com.ldtteam.structurize.util.PlacementSettings;
import com.minecolonies.api.util.BlockPosUtil;
import com.minecolonies.api.util.BlockUtils;
import com.minecolonies.api.util.Log;
import com.minecolonies.coremod.MineColonies;
import com.minecolonies.coremod.blocks.AbstractBlockHut;
import com.minecolonies.coremod.colony.CitizenData;
import com.minecolonies.coremod.colony.Colony;
import com.minecolonies.coremod.colony.buildings.AbstractBuilding;
import com.minecolonies.coremod.colony.buildings.registry.BuildingRegistry;
import com.minecolonies.coremod.colony.buildings.workerbuildings.BuildingCook;
import com.minecolonies.coremod.colony.buildings.workerbuildings.BuildingFarmer;
import com.minecolonies.coremod.colony.buildings.workerbuildings.BuildingTownHall;
import com.minecolonies.coremod.colony.buildings.workerbuildings.BuildingWareHouse;
import com.minecolonies.coremod.colony.buildings.workerbuildings.*;
import com.minecolonies.coremod.colony.managers.interfaces.IBuildingManager;
import com.minecolonies.coremod.colony.workorders.WorkOrderBuildBuilding;
import com.minecolonies.coremod.entity.EntityCitizen;
import com.minecolonies.coremod.entity.ai.citizen.builder.ConstructionTapeHelper;
import com.minecolonies.coremod.network.messages.ColonyViewBuildingViewMessage;
import com.minecolonies.coremod.network.messages.ColonyViewRemoveBuildingMessage;
import com.minecolonies.coremod.tileentities.ScarecrowTileEntity;
import com.minecolonies.coremod.tileentities.TileEntityColonyBuilding;
import com.minecolonies.coremod.util.ColonyUtils;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Tuple;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.common.util.Constants;
Expand Down Expand Up @@ -336,6 +340,25 @@ public AbstractBuilding addNewBuilding(@NotNull final TileEntityColonyBuilding t
{
building.setStyle(colony.getStyle());
}

if (world != null && !(building instanceof PostBox))
{
building.setRotation(BlockUtils.getRotationFromFacing(world.getBlockState(building.getLocation()).getValue(AbstractBlockHut.FACING)));
final WorkOrderBuildBuilding workOrder = new WorkOrderBuildBuilding(building, 1);
final Structure wrapper = new Structure(world, workOrder.getStructureName(), new PlacementSettings());
final Tuple<Tuple<Integer, Integer>, Tuple<Integer, Integer>> corners
= ColonyUtils.calculateCorners(building.getLocation(),
world,
wrapper,
workOrder.getRotation(world),
workOrder.isMirrored());

building.setCorners(corners.getFirst().getFirst(), corners.getFirst().getSecond(), corners.getSecond().getFirst(), corners.getSecond().getSecond());
building.setHeight(wrapper.getHeight());

ConstructionTapeHelper.placeConstructionTape(building.getLocation(), corners, world);
}

ConstructionTapeHelper.placeConstructionTape(building.getLocation(), building.getCorners(), world);
colony.getRequestManager().onProviderAddedToColony(building);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public final class PirateEventUtils
/**
* Folder name for the pirate ship schematics
*/
public static final String PIRATESHIP_FOLDER = "/Decorations/Ships/";
public static final String PIRATESHIP_FOLDER = "/Ships/";

/**
* Colony range divider in which distance to load the pirate spawners.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.minecolonies.coremod.network.messages;

import com.ldtteam.structures.helpers.Structure;
import com.ldtteam.structurize.util.PlacementSettings;
import com.minecolonies.api.colony.permissions.Action;
import com.minecolonies.api.configuration.Configurations;
import com.minecolonies.api.util.*;
Expand All @@ -8,10 +10,12 @@
import com.minecolonies.coremod.colony.Colony;
import com.minecolonies.coremod.colony.ColonyManager;
import com.minecolonies.coremod.colony.buildings.AbstractBuilding;
import com.minecolonies.coremod.colony.buildings.workerbuildings.PostBox;
import com.minecolonies.coremod.colony.workorders.WorkOrderBuildBuilding;
import com.minecolonies.coremod.entity.ai.citizen.builder.ConstructionTapeHelper;
import com.minecolonies.coremod.event.EventHandler;
import com.minecolonies.coremod.items.ModItems;
import com.minecolonies.coremod.util.ColonyUtils;
import com.minecolonies.coremod.util.InstantStructurePlacer;
import com.ldtteam.structurize.client.gui.WindowBuildTool;
import com.ldtteam.structurize.management.StructureName;
Expand All @@ -28,6 +32,7 @@
import net.minecraft.nbt.NBTUtil;
import net.minecraft.stats.StatList;
import net.minecraft.util.Mirror;
import net.minecraft.util.Tuple;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.TextComponentString;
import net.minecraft.world.World;
Expand Down Expand Up @@ -330,6 +335,23 @@ private static void setupBuilding(

building.setStyle(sn.getStyle());
building.setRotation(rotation);

if (!(building instanceof PostBox))
{
ConstructionTapeHelper.removeConstructionTape(building.getCorners(), world);
final WorkOrderBuildBuilding workOrder = new WorkOrderBuildBuilding(building, 1);
final Structure wrapper = new Structure(world, workOrder.getStructureName(), new PlacementSettings());
final Tuple<Tuple<Integer, Integer>, Tuple<Integer, Integer>> corners
= ColonyUtils.calculateCorners(building.getLocation(),
world,
wrapper,
workOrder.getRotation(world),
workOrder.isMirrored());

building.setCorners(corners.getFirst().getFirst(), corners.getFirst().getSecond(), corners.getSecond().getFirst(), corners.getSecond().getSecond());
building.setHeight(wrapper.getHeight());
}

if (mirror)
{
building.invertMirror();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.minecolonies.coremod.network.messages;

import com.ldtteam.structures.helpers.Structure;
import com.ldtteam.structurize.util.PlacementSettings;
import com.minecolonies.api.colony.permissions.Action;
import com.minecolonies.api.util.*;
import com.minecolonies.api.util.constant.Constants;
Expand All @@ -8,8 +10,12 @@
import com.minecolonies.coremod.colony.Colony;
import com.minecolonies.coremod.colony.ColonyManager;
import com.minecolonies.coremod.colony.buildings.AbstractBuilding;
import com.minecolonies.coremod.colony.buildings.workerbuildings.PostBox;
import com.minecolonies.coremod.colony.workorders.WorkOrderBuildBuilding;
import com.minecolonies.coremod.colony.workorders.WorkOrderBuildDecoration;
import com.minecolonies.coremod.entity.ai.citizen.builder.ConstructionTapeHelper;
import com.minecolonies.coremod.event.EventHandler;
import com.minecolonies.coremod.util.ColonyUtils;
import com.minecolonies.coremod.util.InstantStructurePlacer;
import com.ldtteam.structurize.management.StructureName;
import com.ldtteam.structurize.management.Structures;
Expand All @@ -23,6 +29,7 @@
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTUtil;
import net.minecraft.util.Mirror;
import net.minecraft.util.Tuple;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.TextComponentString;
import net.minecraft.world.World;
Expand Down Expand Up @@ -314,9 +321,30 @@ private static void setupBuilding(
building.getTileEntity().setColony(colony);
}
}


building.setStyle(sn.getStyle());
building.setRotation(rotation);
building.setBuildingLevel(level);

if (!(building instanceof PostBox))
{
ConstructionTapeHelper.removeConstructionTape(building.getCorners(), world);
final WorkOrderBuildBuilding workOrder = new WorkOrderBuildBuilding(building, 1);
final Structure wrapper = new Structure(world, workOrder.getStructureName(), new PlacementSettings());
final Tuple<Tuple<Integer, Integer>, Tuple<Integer, Integer>> corners
= ColonyUtils.calculateCorners(building.getLocation(),
world,
wrapper,
workOrder.getRotation(world),
workOrder.isMirrored());

building.setCorners(corners.getFirst().getFirst(), corners.getFirst().getSecond(), corners.getSecond().getFirst(), corners.getSecond().getSecond());
building.setHeight(wrapper.getHeight());

ConstructionTapeHelper.placeConstructionTape(building.getLocation(), corners, world);
}

if (mirror)
{
building.invertMirror();
Expand Down

0 comments on commit f1a17c4

Please sign in to comment.