Files
fabric-carpet/src/main/java/carpet/utils/WoolTool.java
T
gnembon 8f9dd66cdf Merge branch 'master' into 1.15
# Conflicts:
#	src/main/java/carpet/mixins/BuriedTreasureGeneratorPieceMixin.java
#	src/main/java/carpet/mixins/ClientPlayerInteractionManager_ghostBlocksMixin.java
#	src/main/java/carpet/mixins/FossilFeatureMixin.java
#	src/main/java/carpet/mixins/GravityStructureProcessorMixin.java
#	src/main/java/carpet/mixins/IglooGeneratorPieceMixin.java
#	src/main/java/carpet/mixins/KelpFeatureMixin.java
#	src/main/java/carpet/mixins/MobEntity_leashMixin.java
#	src/main/java/carpet/mixins/OceanRuinGeneratorPieceMixin.java
#	src/main/java/carpet/mixins/PistonBlockEntityRenderer_movableTEMixin.java
#	src/main/java/carpet/mixins/PlayerEntity_horseFixMixin.java
#	src/main/java/carpet/mixins/PortalBlock_portalCachingMixin.java
#	src/main/java/carpet/mixins/PortalForcer_portalCachingMixin.java
#	src/main/java/carpet/mixins/SaplingBlockMixin.java
#	src/main/java/carpet/mixins/ServerPlayerInteractionManager_ghostBlocksMixin.java
#	src/main/java/carpet/mixins/ShipwreckGeneratorPieceMixin.java
#	src/main/java/carpet/mixins/SpawnHelperMixin.java
#	src/main/java/carpet/mixins/StructurePieceMixin.java
2019-12-10 23:14:04 -04:00

104 lines
3.9 KiB
Java

package carpet.utils;
import carpet.CarpetSettings;
import carpet.helpers.HopperCounter;
import net.minecraft.block.Material;
import net.minecraft.block.MaterialColor;
import net.minecraft.block.BlockState;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.util.DyeColor;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
import net.minecraft.text.BaseText;
import net.minecraft.world.World;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class WoolTool
{
private static final HashMap<MaterialColor,DyeColor> Material2Dye = new HashMap<>();
static
{
for (DyeColor color: DyeColor.values())
{
Material2Dye.put(color.getMaterialColor(),color);
}
}
public static void carpetPlacedAction(DyeColor color, PlayerEntity placer, BlockPos pos, ServerWorld worldIn)
{
if (!CarpetSettings.carpets)
{
return;
}
switch (color)
{
case PINK:
if (!"false".equals(CarpetSettings.commandSpawn))
Messenger.send(placer, SpawnReporter.report(pos, worldIn));
break;
case BLACK:
if (!"false".equals(CarpetSettings.commandSpawn))
Messenger.send(placer, SpawnReporter.show_mobcaps(pos, worldIn));
break;
case BROWN:
if (!"false".equals(CarpetSettings.commandDistance))
{
ServerCommandSource source = placer.getCommandSource();
if (!DistanceCalculator.hasStartingPoint(source) || placer.isSneaking()) {
DistanceCalculator.setStart(source, new Vec3d(pos));
}
else {
DistanceCalculator.setEnd(source, new Vec3d(pos));
}
}
break;
case GRAY:
if (!"false".equals(CarpetSettings.commandInfo))
Messenger.send(placer, BlockInfo.blockInfo(pos.down(), worldIn));
break;
case YELLOW:
if (!"false".equals(CarpetSettings.commandInfo))
Messenger.m(placer, "r This used to show entity info around the player. Use data get entity command, sorry");
//EntityInfo.issue_entity_info(placer);
break;
case GREEN:
if (CarpetSettings.hopperCounters)
{
DyeColor under = getWoolColorAtPosition(worldIn, pos.down());
if (under == null) return;
HopperCounter counter = HopperCounter.getCounter(under.toString());
if (counter != null)
Messenger.send(placer, counter.format(worldIn.getServer(), false, false));
}
break;
case RED:
if (CarpetSettings.hopperCounters)
{
DyeColor under = getWoolColorAtPosition(worldIn, pos.down());
if (under == null) return;
HopperCounter counter = HopperCounter.getCounter(under.toString());
if (counter == null) return;
counter.reset(placer.getServer());
List<BaseText> res = new ArrayList<>();
res.add(Messenger.s(String.format("%s counter reset",under.toString())));
Messenger.send(placer, res);
}
break;
}
}
public static DyeColor getWoolColorAtPosition(World worldIn, BlockPos pos)
{
BlockState state = worldIn.getBlockState(pos);
if (state.getMaterial() != Material.WOOL || !state.isSimpleFullBlock(worldIn, pos))
return null;
return Material2Dye.get(state.getTopMaterialColor(worldIn, pos));
}
}