mirror of
https://github.com/TheClashFruit/CreatePissAndShit.git
synced 2024-09-19 17:36:47 +00:00
feat: implement the mechanical toilet mostly and it's other stuff
This commit is contained in:
parent
7a1f6fa800
commit
07ca259c44
|
@ -0,0 +1,103 @@
|
||||||
|
package me.theclashfruit.pissnshit.blocks.toilet;
|
||||||
|
|
||||||
|
import com.simibubi.create.content.equipment.wrench.IWrenchable;
|
||||||
|
import com.simibubi.create.foundation.block.IBE;
|
||||||
|
import me.theclashfruit.pissnshit.registry.Blocks;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.block.BlockState;
|
||||||
|
import net.minecraft.block.HorizontalFacingBlock;
|
||||||
|
import net.minecraft.block.ShapeContext;
|
||||||
|
import net.minecraft.block.entity.BlockEntityType;
|
||||||
|
import net.minecraft.item.ItemPlacementContext;
|
||||||
|
import net.minecraft.item.ItemUsageContext;
|
||||||
|
import net.minecraft.state.StateManager;
|
||||||
|
import net.minecraft.state.property.Properties;
|
||||||
|
import net.minecraft.util.function.BooleanBiFunction;
|
||||||
|
import net.minecraft.util.shape.VoxelShape;
|
||||||
|
import net.minecraft.util.shape.VoxelShapes;
|
||||||
|
import net.minecraft.world.BlockView;
|
||||||
|
import net.minecraft.world.WorldView;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.util.math.Direction;
|
||||||
|
|
||||||
|
import static net.minecraft.state.property.Properties.HORIZONTAL_FACING;
|
||||||
|
|
||||||
|
public class MechanicalToiletBlock extends HorizontalFacingBlock implements IBE<MechanicalToiletBlockEntity>, IWrenchable {
|
||||||
|
public MechanicalToiletBlock(Settings properties) {
|
||||||
|
super(properties);
|
||||||
|
|
||||||
|
setDefaultState(getDefaultState().with(HORIZONTAL_FACING, Direction.NORTH));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void appendProperties(StateManager.Builder<Block, BlockState> builder) {
|
||||||
|
builder.add(HORIZONTAL_FACING);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockState getPlacementState(ItemPlacementContext ctx) {
|
||||||
|
return super.getPlacementState(ctx).with(Properties.HORIZONTAL_FACING, ctx.getHorizontalPlayerFacing().getOpposite());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext ctx) {
|
||||||
|
Direction dir = state.get(FACING);
|
||||||
|
VoxelShape shape = VoxelShapes.empty();
|
||||||
|
|
||||||
|
shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.1875, 0, 0.125, 0.8125, 0.125, 1), BooleanBiFunction.OR);
|
||||||
|
shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.125, 0.125, 0.0625, 0.875, 0.25, 0.75), BooleanBiFunction.OR);
|
||||||
|
shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.0625, 0.5, 0, 0.9375, 0.625, 0.125), BooleanBiFunction.OR);
|
||||||
|
shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.0625, 0.5, 0.6875, 0.9375, 0.625, 0.8125), BooleanBiFunction.OR);
|
||||||
|
shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.0625, 0.5, 0.125, 0.1875, 0.625, 0.6875), BooleanBiFunction.OR);
|
||||||
|
shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.8125, 0.5, 0.125, 0.9375, 0.625, 0.6875), BooleanBiFunction.OR);
|
||||||
|
shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.125, 0.125, 0.75, 0.875, 0.5, 0.984375), BooleanBiFunction.OR);
|
||||||
|
shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.125, 0.5, 0.859375, 0.875, 1.1875, 0.984375), BooleanBiFunction.OR);
|
||||||
|
shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.109375, 1.15625, 0.84375, 0.890625, 1.25, 1), BooleanBiFunction.OR);
|
||||||
|
shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.15625, 0.625, 0.765625, 0.859375, 1.375, 0.828125), BooleanBiFunction.OR);
|
||||||
|
shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.125, 0.25, 0.0625, 0.25, 0.5, 0.75), BooleanBiFunction.OR);
|
||||||
|
shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.75, 0.25, 0.0625, 0.875, 0.5, 0.75), BooleanBiFunction.OR);
|
||||||
|
shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.25, 0.25, 0.0625, 0.75, 0.5, 0.1875), BooleanBiFunction.OR);
|
||||||
|
shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.25, 0.25, 0.625, 0.75, 0.5, 0.75), BooleanBiFunction.OR);
|
||||||
|
shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.25, 0.25, 0.4375, 0.75, 0.3125, 0.625), BooleanBiFunction.OR);
|
||||||
|
shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.25, 0.25, 0.1875, 0.375, 0.3125, 0.4375), BooleanBiFunction.OR);
|
||||||
|
shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.625, 0.25, 0.1875, 0.75, 0.3125, 0.4375), BooleanBiFunction.OR);
|
||||||
|
shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.375, 0.25, 0.1875, 0.4375, 0.328125, 0.4375), BooleanBiFunction.OR);
|
||||||
|
shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.4375, 0.25, 0.375, 0.5625, 0.328125, 0.4375), BooleanBiFunction.OR);
|
||||||
|
shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.5625, 0.25, 0.1875, 0.625, 0.328125, 0.4375), BooleanBiFunction.OR);
|
||||||
|
shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.0625, 0.921875, 0.9375, 0.125, 1.046875, 0.96875), BooleanBiFunction.OR);
|
||||||
|
shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.421875, 0.25, 0.171875, 0.578125, 0.296875, 0.375), BooleanBiFunction.OR);
|
||||||
|
shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.1875, 0.1875, 0.875, 0.8125, 0.8125, 1), BooleanBiFunction.OR);
|
||||||
|
|
||||||
|
return rotateShape(Direction.NORTH, dir, shape);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockState updateAfterWrenched(BlockState newState, ItemUsageContext context) {
|
||||||
|
return newState;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<MechanicalToiletBlockEntity> getBlockEntityClass() {
|
||||||
|
return MechanicalToiletBlockEntity.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockEntityType<? extends MechanicalToiletBlockEntity> getBlockEntityType() {
|
||||||
|
return Blocks.MECHANICAL_TOILET_BLOCK_ENTITY;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static VoxelShape rotateShape(Direction from, Direction to, VoxelShape shape) {
|
||||||
|
VoxelShape[] buffer = new VoxelShape[]{ shape, VoxelShapes.empty() };
|
||||||
|
|
||||||
|
int times = (to.getHorizontal() - from.getHorizontal() + 4) % 4;
|
||||||
|
|
||||||
|
for (int i = 0; i < times; i++) {
|
||||||
|
buffer[0].forEachBox((minX, minY, minZ, maxX, maxY, maxZ) -> buffer[1] = VoxelShapes.combine(buffer[1], VoxelShapes.cuboid(1-maxZ, minY, minX, 1-minZ, maxY, maxX), BooleanBiFunction.OR));
|
||||||
|
|
||||||
|
buffer[0] = buffer[1];
|
||||||
|
buffer[1] = VoxelShapes.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
return buffer[0];
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,96 @@
|
||||||
|
package me.theclashfruit.pissnshit.blocks.toilet;
|
||||||
|
|
||||||
|
import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation;
|
||||||
|
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||||
|
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||||
|
import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform;
|
||||||
|
import com.simibubi.create.foundation.blockEntity.behaviour.fluid.SmartFluidTankBehaviour;
|
||||||
|
import com.simibubi.create.foundation.fluid.CombinedTankWrapper;
|
||||||
|
import com.simibubi.create.foundation.utility.Lang;
|
||||||
|
import com.simibubi.create.foundation.utility.LangBuilder;
|
||||||
|
import com.simibubi.create.foundation.utility.VecHelper;
|
||||||
|
import com.simibubi.create.infrastructure.config.AllConfigs;
|
||||||
|
import io.github.fabricators_of_create.porting_lib.fluids.FluidStack;
|
||||||
|
import io.github.fabricators_of_create.porting_lib.util.FluidTextUtil;
|
||||||
|
import io.github.fabricators_of_create.porting_lib.util.FluidUnit;
|
||||||
|
import me.theclashfruit.pissnshit.registry.Blocks;
|
||||||
|
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidConstants;
|
||||||
|
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant;
|
||||||
|
import net.fabricmc.fabric.api.transfer.v1.storage.Storage;
|
||||||
|
import net.fabricmc.fabric.api.transfer.v1.storage.base.SidedStorageBlockEntity;
|
||||||
|
import net.minecraft.block.BlockState;
|
||||||
|
import net.minecraft.block.entity.BlockEntity;
|
||||||
|
import net.minecraft.text.Text;
|
||||||
|
import net.minecraft.text.TextColor;
|
||||||
|
import net.minecraft.util.Formatting;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.util.math.Direction;
|
||||||
|
import net.minecraft.util.math.Vec3d;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
import java.awt.*;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class MechanicalToiletBlockEntity extends SmartBlockEntity implements IHaveGoggleInformation, SidedStorageBlockEntity {
|
||||||
|
private SmartFluidTankBehaviour tank;
|
||||||
|
|
||||||
|
public MechanicalToiletBlockEntity(BlockPos pos, BlockState state) {
|
||||||
|
super(Blocks.MECHANICAL_TOILET_BLOCK_ENTITY, pos, state);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
|
||||||
|
tank = new SmartFluidTankBehaviour(SmartFluidTankBehaviour.OUTPUT, this, 2, FluidConstants.BUCKET, true)
|
||||||
|
.forbidInsertion();
|
||||||
|
|
||||||
|
behaviours.add(tank);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public Storage<FluidVariant> getFluidStorage(@Nullable Direction face) {
|
||||||
|
return tank.getCapability();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void tick() {
|
||||||
|
super.tick();
|
||||||
|
|
||||||
|
if (world.isClient) return;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean addToGoggleTooltip(List<Text> tooltip, boolean isPlayerSneaking) {
|
||||||
|
Lang.translate("gui.goggles.basin_contents")
|
||||||
|
.forGoggles(tooltip);
|
||||||
|
|
||||||
|
boolean isEmpty = true;
|
||||||
|
|
||||||
|
FluidUnit unit = AllConfigs.client().fluidUnitType.get();
|
||||||
|
LangBuilder unitSuffix = Lang.translate(unit.getTranslationKey());
|
||||||
|
boolean simplify = AllConfigs.client().simplifyFluidUnit.get();
|
||||||
|
|
||||||
|
for (SmartFluidTankBehaviour.TankSegment tank : tank.getTanks()) {
|
||||||
|
FluidStack fluidStack = tank.getTank().getFluid();
|
||||||
|
|
||||||
|
if (fluidStack.isEmpty())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
Lang.text("")
|
||||||
|
.add(Lang.fluidName(fluidStack)
|
||||||
|
.add(Lang.text(" "))
|
||||||
|
.style(Formatting.GRAY)
|
||||||
|
.add(Lang.text(FluidTextUtil.getUnicodeMillibuckets(fluidStack.getAmount(), unit, simplify))
|
||||||
|
.add(unitSuffix)
|
||||||
|
.style(Formatting.BLUE)))
|
||||||
|
.forGoggles(tooltip, 1);
|
||||||
|
|
||||||
|
isEmpty = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isEmpty)
|
||||||
|
tooltip.remove(0);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,14 +1,27 @@
|
||||||
package me.theclashfruit.pissnshit.registry;
|
package me.theclashfruit.pissnshit.registry;
|
||||||
|
|
||||||
|
import com.simibubi.create.content.kinetics.BlockStressDefaults;
|
||||||
|
import com.simibubi.create.foundation.data.AssetLookup;
|
||||||
|
import com.simibubi.create.foundation.data.BlockStateGen;
|
||||||
|
import com.simibubi.create.foundation.data.CreateRegistrate;
|
||||||
|
import com.simibubi.create.foundation.data.SharedProperties;
|
||||||
|
import com.tterrag.registrate.util.entry.BlockEntityEntry;
|
||||||
|
import com.tterrag.registrate.util.entry.BlockEntry;
|
||||||
|
import me.theclashfruit.pissnshit.blocks.toilet.MechanicalToiletBlock;
|
||||||
|
import me.theclashfruit.pissnshit.blocks.toilet.MechanicalToiletBlockEntity;
|
||||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||||
import net.minecraft.block.*;
|
import net.minecraft.block.*;
|
||||||
|
import net.minecraft.block.entity.BlockEntityType;
|
||||||
import net.minecraft.block.piston.PistonBehavior;
|
import net.minecraft.block.piston.PistonBehavior;
|
||||||
|
import net.minecraft.client.render.RenderLayer;
|
||||||
import net.minecraft.fluid.FlowableFluid;
|
import net.minecraft.fluid.FlowableFluid;
|
||||||
import net.minecraft.registry.Registries;
|
import net.minecraft.registry.Registries;
|
||||||
import net.minecraft.registry.Registry;
|
import net.minecraft.registry.Registry;
|
||||||
import net.minecraft.sound.BlockSoundGroup;
|
import net.minecraft.sound.BlockSoundGroup;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
|
import static com.simibubi.create.foundation.data.ModelGen.customItemModel;
|
||||||
|
import static com.simibubi.create.foundation.data.TagGen.axeOrPickaxe;
|
||||||
import static me.theclashfruit.pissnshit.PissAndShit.MOD_ID;
|
import static me.theclashfruit.pissnshit.PissAndShit.MOD_ID;
|
||||||
import static me.theclashfruit.pissnshit.registry.Fluids.STILL_PISS;
|
import static me.theclashfruit.pissnshit.registry.Fluids.STILL_PISS;
|
||||||
|
|
||||||
|
@ -25,5 +38,35 @@ public class Blocks {
|
||||||
.luminance(CandleBlock.STATE_TO_LUMINANCE)
|
.luminance(CandleBlock.STATE_TO_LUMINANCE)
|
||||||
.pistonBehavior(PistonBehavior.DESTROY)));
|
.pistonBehavior(PistonBehavior.DESTROY)));
|
||||||
|
|
||||||
|
public static final CreateRegistrate REGISTRATE = CreateRegistrate.create(MOD_ID);
|
||||||
|
|
||||||
|
public static final MechanicalToiletBlock MECHANICAL_TOILET = Registry.register(Registries.BLOCK, new Identifier(MOD_ID, "mechanical_toilet"), new MechanicalToiletBlock(AbstractBlock.Settings.create()
|
||||||
|
.mapColor(MapColor.ORANGE)
|
||||||
|
));
|
||||||
|
|
||||||
|
public static final BlockEntityType<MechanicalToiletBlockEntity> MECHANICAL_TOILET_BLOCK_ENTITY = Registry.register(Registries.BLOCK_ENTITY_TYPE, new Identifier(MOD_ID, "mechanical_toilet_block_entity"), BlockEntityType.Builder.create(MechanicalToiletBlockEntity::new, MECHANICAL_TOILET).build(null));
|
||||||
|
|
||||||
|
/*
|
||||||
|
REGISTRATE
|
||||||
|
.block("encased_fan", MechanicalToiletBlock::new)
|
||||||
|
.initialProperties(SharedProperties::copperMetal)
|
||||||
|
.properties(p -> p.mapColor(MapColor.ORANGE))
|
||||||
|
.blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p)))
|
||||||
|
.transform(BlockStressDefaults.setImpact(8.0))
|
||||||
|
.item()
|
||||||
|
.transform(customItemModel())
|
||||||
|
.addLayer(() -> RenderLayer::getCutout)
|
||||||
|
.register();
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
public static final BlockEntityEntry<MechanicalToiletBlockEntity> MECHANICAL_TOILET_ENTITY = REGISTRATE
|
||||||
|
.blockEntity("encased_fan", MechanicalToiletBlockEntity::new)
|
||||||
|
.instance(() -> MechanicalToiletCogInstance::new)
|
||||||
|
.validBlocks(MECHANICAL_TOILET)
|
||||||
|
.renderer(() -> MechanicalToiletRenderer::new)
|
||||||
|
.register();
|
||||||
|
*/
|
||||||
|
|
||||||
public static void init() {}
|
public static void init() {}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,8 +23,13 @@ public class ItemGroups {
|
||||||
entries.add(Items.SHIT);
|
entries.add(Items.SHIT);
|
||||||
entries.add(Items.HOLY_SHIT);
|
entries.add(Items.HOLY_SHIT);
|
||||||
|
|
||||||
|
// 😳
|
||||||
|
entries.add(Items.FLUSHED);
|
||||||
|
|
||||||
entries.add(Items.SHIT_CANDLE);
|
entries.add(Items.SHIT_CANDLE);
|
||||||
entries.add(Blocks.SHIT_BLOCK);
|
entries.add(Items.SHIT_BLOCK);
|
||||||
|
|
||||||
|
entries.add(Items.MECHANICAL_TOILET);
|
||||||
})
|
})
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
|
|
@ -76,6 +76,15 @@ public class Items {
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
public static Item FLUSHED = register(
|
||||||
|
"flushed",
|
||||||
|
new Item(
|
||||||
|
new Item
|
||||||
|
.Settings()
|
||||||
|
.rarity(Rarity.EPIC)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
public static Item SHIT_BLOCK = register(
|
public static Item SHIT_BLOCK = register(
|
||||||
"shit_block",
|
"shit_block",
|
||||||
new BlockItem(
|
new BlockItem(
|
||||||
|
@ -91,6 +100,14 @@ public class Items {
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
public static Item MECHANICAL_TOILET = register(
|
||||||
|
"mechanical_toilet",
|
||||||
|
new BlockItem(
|
||||||
|
Blocks.MECHANICAL_TOILET,
|
||||||
|
new Item.Settings()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
public static void init() {}
|
public static void init() {}
|
||||||
|
|
||||||
private static Item register(String id, Item item) {
|
private static Item register(String id, Item item) {
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"facing=north": {
|
||||||
|
"model": "pissnshit:block/mechanical_toilet"
|
||||||
|
},
|
||||||
|
"facing=west": {
|
||||||
|
"model": "pissnshit:block/mechanical_toilet",
|
||||||
|
"y": 270
|
||||||
|
},
|
||||||
|
"facing=east": {
|
||||||
|
"model": "pissnshit:block/mechanical_toilet",
|
||||||
|
"y": 90
|
||||||
|
},
|
||||||
|
"facing=south": {
|
||||||
|
"model": "pissnshit:block/mechanical_toilet",
|
||||||
|
"y": 180
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,13 +5,15 @@
|
||||||
"item.pissnshit.shit": "Shit",
|
"item.pissnshit.shit": "Shit",
|
||||||
"item.pissnshit.holy_shit": "Holy Shit",
|
"item.pissnshit.holy_shit": "Holy Shit",
|
||||||
|
|
||||||
|
"item.pissnshit.flushed": "Flushed",
|
||||||
|
|
||||||
"block.pissnshit.piss": "Piss",
|
"block.pissnshit.piss": "Piss",
|
||||||
"block.pissnshit.shit_block": "Shit Block",
|
"block.pissnshit.shit_block": "Shit Block",
|
||||||
|
|
||||||
"block.pissnshit.shit_candle": "Shit Candle",
|
"block.pissnshit.shit_candle": "Shit Candle",
|
||||||
"block.pissnshit.shit_candle.tooltip": "§8§oIt smells like shit...",
|
"block.pissnshit.shit_candle.tooltip": "§8§oIt smells like shit...",
|
||||||
|
|
||||||
"block.pissnshit.mechanical_sanctifier": "Mechanical Sanctifier",
|
"block.pissnshit.mechanical_toilet": "Mechanical Toilet",
|
||||||
|
|
||||||
"effect.pissnshit.diarrhea": "Diarrhea",
|
"effect.pissnshit.diarrhea": "Diarrhea",
|
||||||
|
|
||||||
|
@ -38,6 +40,12 @@
|
||||||
"advancements.pissnshit.piss_cubed.title": "Piss³",
|
"advancements.pissnshit.piss_cubed.title": "Piss³",
|
||||||
"advancements.pissnshit.piss_cubed.description": "Obtain a bucket of piss.",
|
"advancements.pissnshit.piss_cubed.description": "Obtain a bucket of piss.",
|
||||||
|
|
||||||
|
"advancements.pissnshit.mechanical_marvel.title": "Mechanical Marvel",
|
||||||
|
"advancements.pissnshit.mechanical_marvel.description": "Craft a mechanical toilet.",
|
||||||
|
|
||||||
|
"advancements.pissnshit.flushed.title": "Flush(ed)",
|
||||||
|
"advancements.pissnshit.flushed.description": "Use your newly operational mechanical toilet.",
|
||||||
|
|
||||||
"death.attack.fullOfPiss": "%1$s got full of piss.",
|
"death.attack.fullOfPiss": "%1$s got full of piss.",
|
||||||
"death.attack.fullOfShit": "%1$s got full of shit.",
|
"death.attack.fullOfShit": "%1$s got full of shit.",
|
||||||
|
|
||||||
|
|
|
@ -326,5 +326,36 @@
|
||||||
"down": {"uv": [11.5, 18.5, 10.5, 11], "texture": "#1"}
|
"down": {"uv": [11.5, 18.5, 10.5, 11], "texture": "#1"}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"display": {
|
||||||
|
"thirdperson_righthand": {
|
||||||
|
"translation": [0, 4, 0],
|
||||||
|
"scale": [0.5, 0.5, 0.5]
|
||||||
|
},
|
||||||
|
"thirdperson_lefthand": {
|
||||||
|
"translation": [0, 4, 0],
|
||||||
|
"scale": [0.5, 0.5, 0.5]
|
||||||
|
},
|
||||||
|
"firstperson_righthand": {
|
||||||
|
"scale": [0.5, 0.5, 0.5]
|
||||||
|
},
|
||||||
|
"firstperson_lefthand": {
|
||||||
|
"scale": [0.5, 0.5, 0.5]
|
||||||
|
},
|
||||||
|
"ground": {
|
||||||
|
"scale": [0.5, 0.5, 0.5]
|
||||||
|
},
|
||||||
|
"gui": {
|
||||||
|
"rotation": [28, 130, -1],
|
||||||
|
"translation": [0, -1.25, 0],
|
||||||
|
"scale": [0.5, 0.5, 0.5]
|
||||||
|
},
|
||||||
|
"head": {
|
||||||
|
"translation": [0, 14, 0]
|
||||||
|
},
|
||||||
|
"fixed": {
|
||||||
|
"translation": [0, 0, -3],
|
||||||
|
"scale": [0.5, 0.5, 0.5]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "pissnshit:item/flushed"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "pissnshit:block/mechanical_toilet"
|
||||||
|
}
|
BIN
src/main/resources/assets/pissnshit/textures/item/flushed.png
Normal file
BIN
src/main/resources/assets/pissnshit/textures/item/flushed.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 761 B |
|
@ -0,0 +1,31 @@
|
||||||
|
{
|
||||||
|
"display": {
|
||||||
|
"icon": {
|
||||||
|
"item": "pissnshit:flushed"
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"translate": "advancements.pissnshit.flushed.title"
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"translate": "advancements.pissnshit.flushed.description"
|
||||||
|
},
|
||||||
|
"frame": "challenge",
|
||||||
|
"show_toast": true,
|
||||||
|
"announce_to_chat": true,
|
||||||
|
"hidden": false
|
||||||
|
},
|
||||||
|
"parent": "minecraft:pissnshit/mechanical_marvel",
|
||||||
|
"criteria": {
|
||||||
|
"mechanical_toilet": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe_id": "pissnshit:mechanical_toilet"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_crafted"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"mechanical_toilet"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
{
|
||||||
|
"display": {
|
||||||
|
"icon": {
|
||||||
|
"item": "pissnshit:mechanical_toilet"
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"translate": "advancements.pissnshit.mechanical_marvel.title"
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"translate": "advancements.pissnshit.mechanical_marvel.description"
|
||||||
|
},
|
||||||
|
"frame": "goal",
|
||||||
|
"show_toast": true,
|
||||||
|
"announce_to_chat": true,
|
||||||
|
"hidden": false
|
||||||
|
},
|
||||||
|
"parent": "minecraft:pissnshit/root",
|
||||||
|
"criteria": {
|
||||||
|
"mechanical_toilet": {
|
||||||
|
"conditions": {
|
||||||
|
"recipe_id": "pissnshit:mechanical_toilet"
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:recipe_crafted"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"mechanical_toilet"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"pattern": [
|
||||||
|
" V ",
|
||||||
|
"CTL",
|
||||||
|
" # "
|
||||||
|
],
|
||||||
|
"key": {
|
||||||
|
"V": {
|
||||||
|
"item": "create:fluid_valve"
|
||||||
|
},
|
||||||
|
"C": {
|
||||||
|
"item": "create:cogwheel"
|
||||||
|
},
|
||||||
|
"T": {
|
||||||
|
"item": "create:fluid_tank"
|
||||||
|
},
|
||||||
|
"L": {
|
||||||
|
"item": "minecraft:lever"
|
||||||
|
},
|
||||||
|
"#": {
|
||||||
|
"item": "create:copper_casing"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"result": {
|
||||||
|
"item": "pissnshit:mechanical_toilet",
|
||||||
|
"count": 2
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue