Files
fabric-carpet/src/main/java/carpet/utils/WoolTool.java
T
2019-05-11 11:20:56 -03:00

103 lines
3.8 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.util.DyeColor;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
import net.minecraft.network.chat.BaseComponent;
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, World worldIn)
{
if (!CarpetSettings.getBool("carpets"))
{
return;
}
switch (color)
{
case PINK:
if (CarpetSettings.getBool("commandSpawn"))
Messenger.send(placer, SpawnReporter.report(pos, worldIn));
break;
case BLACK:
if (CarpetSettings.getBool("commandSpawn"))
Messenger.send(placer, SpawnReporter.show_mobcaps(pos, worldIn));
break;
case BROWN:
if (CarpetSettings.getBool("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 (CarpetSettings.getBool("commandInfo"))
Messenger.send(placer, BlockInfo.blockInfo(pos.down(), worldIn));
break;
case YELLOW:
if (CarpetSettings.getBool("commandInfo"))
Messenger.m(placer, "r use data get entity command");
//EntityInfo.issue_entity_info(placer);
break;
case GREEN:
if (CarpetSettings.getBool("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.getBool("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<BaseComponent> 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));
}
}