Breakbeat Cardboard

- Added Block of Cardboard
- Stealth overlay placeholder texture
- Randomize stealth box
- Cardboard Sword plays sound when hitting blocks
This commit is contained in:
simibubi 2024-10-17 19:13:11 +02:00
parent 58007c5f88
commit 186aa54e6f
32 changed files with 426 additions and 23 deletions

View file

@ -1,4 +1,4 @@
// 1.20.1 2024-10-16T10:36:50.6126632 Registrate Provider for create [Recipes, Advancements, Loot Tables, Tags (blocks), Tags (items), Tags (fluids), Tags (entity_types), Blockstates, Item models, Lang (en_us/en_ud)]
// 1.20.1 2024-10-17T18:56:47.626034 Registrate Provider for create [Recipes, Advancements, Loot Tables, Tags (blocks), Tags (items), Tags (fluids), Tags (entity_types), Blockstates, Item models, Lang (en_us/en_ud)]
60bbdf92d2ac9824ea6144955c74043a6005f79d assets/create/blockstates/acacia_window.json
6a67703c2697d81b7dc83e9d72a66f9c9ff08383 assets/create/blockstates/acacia_window_pane.json
c3ae87b62e81d8e9476eccd793bb1548d74c66a1 assets/create/blockstates/adjustable_chain_gearshift.json
@ -54,6 +54,7 @@ c23d7f691bf532d6b27317c0063289a8bd747de2 assets/create/blockstates/brown_postbox
1ffc38bf682e84aad4cb300c573375eb0cdcc434 assets/create/blockstates/brown_toolbox.json
440b29e1dffa4374ddc1aed444bff18a485bc1cb assets/create/blockstates/brown_valve_handle.json
2064534de4791b339fdcd4ef3a8129a2e233ec50 assets/create/blockstates/calcite_pillar.json
6a3e661d54423af7a8d642b813deb8f5331013c5 assets/create/blockstates/cardboard_block.json
060c957b28afed9f4e0954cbef7e80cbf4b99f58 assets/create/blockstates/cart_assembler.json
fab98b93ad9b78312742daca83c2575db40fce98 assets/create/blockstates/chain_conveyor.json
c7eca70054241944171b1d4ffcba0376b071ec62 assets/create/blockstates/chocolate.json
@ -609,8 +610,8 @@ b0d8f08968763a5f74e5cd5644377a76a9f39753 assets/create/blockstates/yellow_toolbo
fe8c497aacc641c2f01cec90bba9f19e59cc2ed2 assets/create/blockstates/yellow_valve_handle.json
e819e93fdcbe9fd9c050a052d2718ff3b3539365 assets/create/blockstates/zinc_block.json
64121dcb216381c83b4fe28aa361ea07c24c9ad0 assets/create/blockstates/zinc_ore.json
bb133028f134e0cf078a08fb468a6005f7d46c76 assets/create/lang/en_ud.json
119508739932781e5166384ab3ecdc82dd01760e assets/create/lang/en_us.json
1d3a9e827cc454562c86cc8c5ee596b78cfa7a57 assets/create/lang/en_ud.json
b6619ed3dcd9146aa7a567629455ef7c01146437 assets/create/lang/en_us.json
a97e1060e00ae701a02e39cd4ef8054cf345fac4 assets/create/models/block/acacia_window.json
103e032c0b1a0a6a27c67da8c91179a564bd281c assets/create/models/block/acacia_window_pane_noside.json
fb00b627abda76ad4fea867ca57dbfadd24fffa3 assets/create/models/block/acacia_window_pane_noside_alt.json
@ -1768,6 +1769,7 @@ fce64539b36fc8a5ffa39d7a3f73765818437cbf assets/create/models/item/brown_seat.js
1db479848369140bb913ba09f3f1d994e4ac864c assets/create/models/item/builders_tea.json
f5ff4e2ed2ea2e43b6d02f6a95ba02b2e4b611dc assets/create/models/item/calcite_pillar.json
cc2692f7964f4266ecf00fcab176b1ef0b78673f assets/create/models/item/cardboard.json
607272f2b906fdffd46677d47a4e6ecb94184eff assets/create/models/item/cardboard_block.json
39eadb54cec52d9e2a087fc71ef83341688f2781 assets/create/models/item/cardboard_boots.json
d6a3f139fca5ac6aff94d11d75fe239283bb4a09 assets/create/models/item/cardboard_chestplate.json
82236ea8e939c46f0d2c9142336190eca2a0425e assets/create/models/item/cardboard_helmet.json
@ -3080,6 +3082,7 @@ bfa0365507a888134c20b36af4bd7944263687f0 data/create/loot_tables/blocks/brown_po
588ae3d0da73eed3bc30cb28c583e7f8312d15bd data/create/loot_tables/blocks/brown_toolbox.json
7c7cf4c30786f6e0a699e2b3f9120343e53107f4 data/create/loot_tables/blocks/brown_valve_handle.json
06d1c478e4236210aa12b5911691868fef33bb5f data/create/loot_tables/blocks/calcite_pillar.json
3d65461b1fc2667f446aefa2853621c06068bb38 data/create/loot_tables/blocks/cardboard_block.json
515c839deea520b07b03f7ba65c4a7b22fdf5ba3 data/create/loot_tables/blocks/cart_assembler.json
aadd8aa7f8433896bd4fea56f43e496cbc5be25a data/create/loot_tables/blocks/chain_conveyor.json
fb4877d45df15be1a74378ab28f23fbf9d0657ef data/create/loot_tables/blocks/chute.json
@ -4351,9 +4354,10 @@ de1fc89be6a52473d526d3efe0204b9b8489058c data/forge/tags/blocks/glass_panes.json
e475ad1c52bffedfc544e5331a87c1f5c45149fd data/forge/tags/blocks/ores_in_ground/deepslate.json
2f6068972e364599b6849dc46fcb0724d4219d53 data/forge/tags/blocks/ores_in_ground/stone.json
8a5988e68f3a41341b486784c29d00e16d5272f7 data/forge/tags/blocks/relocation_not_supported.json
b3af02a6fa3dc41bc3f4db933485f22b202deea3 data/forge/tags/blocks/storage_blocks.json
807ea01d3b028bd226ed0befc142cbd23647e998 data/forge/tags/blocks/storage_blocks.json
7d10cdf9e46a79753d4437c7bb958e3ab8bf0c89 data/forge/tags/blocks/storage_blocks/andesite_alloy.json
70bba470740dc7a77f51b4cb1747a105b62d4bde data/forge/tags/blocks/storage_blocks/brass.json
18f54179c6f809ff4aee792702fa35d3053e5dc4 data/forge/tags/blocks/storage_blocks/cardboard.json
bcd593714f43bc6a0aefbd714c24db3cf9e71250 data/forge/tags/blocks/storage_blocks/raw_zinc.json
41b2a17b5ebcff5623e25dc6232f73cf9aa70387 data/forge/tags/blocks/storage_blocks/zinc.json
8140415f1c16f09167f41eeee25c09706a944be0 data/forge/tags/fluids/chocolate.json
@ -4393,9 +4397,10 @@ ef5256892a9d4167bf7371c7138a933a107a123a data/forge/tags/items/plates/copper.jso
07a6e69488ff6994a9ef1cca75b6e911bc3e3358 data/forge/tags/items/plates/obsidian.json
30496416fffaf4f845052a264023e64e52894ee7 data/forge/tags/items/raw_materials.json
30496416fffaf4f845052a264023e64e52894ee7 data/forge/tags/items/raw_materials/zinc.json
b3af02a6fa3dc41bc3f4db933485f22b202deea3 data/forge/tags/items/storage_blocks.json
807ea01d3b028bd226ed0befc142cbd23647e998 data/forge/tags/items/storage_blocks.json
7d10cdf9e46a79753d4437c7bb958e3ab8bf0c89 data/forge/tags/items/storage_blocks/andesite_alloy.json
70bba470740dc7a77f51b4cb1747a105b62d4bde data/forge/tags/items/storage_blocks/brass.json
18f54179c6f809ff4aee792702fa35d3053e5dc4 data/forge/tags/items/storage_blocks/cardboard.json
bcd593714f43bc6a0aefbd714c24db3cf9e71250 data/forge/tags/items/storage_blocks/raw_zinc.json
41b2a17b5ebcff5623e25dc6232f73cf9aa70387 data/forge/tags/items/storage_blocks/zinc.json
b69fcc7227d44fc000c8ab94524230f55b89aa27 data/forge/tags/items/stripped_logs.json
@ -4408,7 +4413,7 @@ c741ba83b562ae3459d7c4f2db69537f549ea411 data/forge/tags/items/tools/wrench.json
515a1c773e617dd7e38aa1b893acc7db2dd30e08 data/minecraft/tags/blocks/dripstone_replaceable_blocks.json
e3321ff14704c031a2c16953b7e391f4f24dd70b data/minecraft/tags/blocks/impermeable.json
515a1c773e617dd7e38aa1b893acc7db2dd30e08 data/minecraft/tags/blocks/lush_ground_replaceable.json
5bfa11627f37364de2098753c85a589721cfa2af data/minecraft/tags/blocks/mineable/axe.json
f65bb63cc66aa72b5b9fa05dd88e2a69c8bf7d55 data/minecraft/tags/blocks/mineable/axe.json
1f8802b85d179bbd7f74ec37c6ffceb59eb4856c data/minecraft/tags/blocks/mineable/pickaxe.json
515a1c773e617dd7e38aa1b893acc7db2dd30e08 data/minecraft/tags/blocks/moss_replaceable.json
0c13aae0eeb99e89febe8dbe5e002af2ff843a9e data/minecraft/tags/blocks/needs_iron_tool.json

View file

@ -1,4 +1,4 @@
// 1.20.1 2024-10-15T10:59:16.195561 Create's Standard Recipes
// 1.20.1 2024-10-17T18:56:47.6838794 Create's Standard Recipes
a8cc4af26f6c7c45a9eef12e92af1452fe042454 data/create/advancements/recipes/combat/crafting/appliances/netherite_backtank.json
2c2639c7b307ee7c7a4e97e5efebf496788998ad data/create/advancements/recipes/combat/crafting/appliances/netherite_backtank_from_netherite.json
81dcf0cb1aa99e39bc7d1a386e07cad4cee7d8b9 data/create/advancements/recipes/combat/crafting/appliances/netherite_diving_boots.json
@ -188,6 +188,8 @@ cb416511a219d2bc5806c6880c01820a8b563b80 data/create/advancements/recipes/misc/c
8aa51bd8685a70f200506d3efd4e73ce9b2d7370 data/create/advancements/recipes/misc/crafting/materials/brass_ingot_from_compacting.json
9e703c5fa1bd44eb6581e745f06923d40126ada4 data/create/advancements/recipes/misc/crafting/materials/brass_ingot_from_decompacting.json
4cb9d1fc5289b11df4610a85aa2cd67877556b32 data/create/advancements/recipes/misc/crafting/materials/brass_nugget_from_decompacting.json
f07788c42f4c49d0b4fc7253742d95e94bd5346d data/create/advancements/recipes/misc/crafting/materials/cardboard_block.json
86439f388e88fe56d3931ab46fce5a111b2c15f4 data/create/advancements/recipes/misc/crafting/materials/cardboard_from_block.json
ffcd3f0339794c782a8be8434cd79de15d0ab3cc data/create/advancements/recipes/misc/crafting/materials/copper_ingot.json
58c23978d7222951cba2bbf3020cd0c2c6f85ac9 data/create/advancements/recipes/misc/crafting/materials/copper_nugget.json
d4879e7721bdbb6c7029ac88ff5684acec8223d6 data/create/advancements/recipes/misc/crafting/materials/electron_tube.json
@ -438,6 +440,8 @@ f9f94e5082e7971e55b25bc00ba86c3579b492aa data/create/recipes/crafting/materials/
ecd8581ad4a04cc1217133363bd15d76129cb651 data/create/recipes/crafting/materials/brass_ingot_from_compacting.json
fe2f3c0722aa0f6b41ad0f497b9742eb856c0dd0 data/create/recipes/crafting/materials/brass_ingot_from_decompacting.json
941b2c1007c4b3afb6e141a754141de1b1c9a43a data/create/recipes/crafting/materials/brass_nugget_from_decompacting.json
4c92a1eadc2e5dfba9e871537671702ccf35368a data/create/recipes/crafting/materials/cardboard_block.json
cb1188148d18e456cecd33279aaf695787ddbf74 data/create/recipes/crafting/materials/cardboard_from_block.json
d4d6664d05c7406b4f839413d4e3c60cf0347fb7 data/create/recipes/crafting/materials/copper_ingot.json
4863d3feda514d414962c1947abaa232ab3f6cd5 data/create/recipes/crafting/materials/copper_nugget.json
66c0b1d060395826c4a45082a03295b5df450801 data/create/recipes/crafting/materials/electron_tube.json

View file

@ -0,0 +1,11 @@
{
"variants": {
"axis=x": {
"model": "create:block/cardboard_block",
"y": 90
},
"axis=z": {
"model": "create:block/cardboard_block"
}
}
}

View file

@ -240,6 +240,7 @@
"block.create.brown_toolbox": "xoqןoo⟘ uʍoɹᗺ",
"block.create.brown_valve_handle": ןpuɐH ǝʌןɐΛ uʍoɹᗺ",
"block.create.calcite_pillar": "ɹɐןןıԀ ǝʇıɔןɐƆ",
"block.create.cardboard_block": "pɹɐoqpɹɐƆ ɟo ʞɔoןᗺ",
"block.create.cart_assembler": "ɹǝןqɯǝssⱯ ʇɹɐƆ",
"block.create.chain_conveyor": "ɹoʎǝʌuoƆ uıɐɥƆ",
"block.create.chocolate": "ǝʇɐןoɔoɥƆ",

View file

@ -240,6 +240,7 @@
"block.create.brown_toolbox": "Brown Toolbox",
"block.create.brown_valve_handle": "Brown Valve Handle",
"block.create.calcite_pillar": "Calcite Pillar",
"block.create.cardboard_block": "Block of Cardboard",
"block.create.cart_assembler": "Cart Assembler",
"block.create.chain_conveyor": "Chain Conveyor",
"block.create.chocolate": "Chocolate",

View file

@ -0,0 +1,3 @@
{
"parent": "create:block/cardboard_block"
}

View file

@ -0,0 +1,35 @@
{
"parent": "minecraft:recipes/root",
"criteria": {
"has_item": {
"conditions": {
"items": [
{
"items": [
"create:cardboard"
]
}
]
},
"trigger": "minecraft:inventory_changed"
},
"has_the_recipe": {
"conditions": {
"recipe": "create:crafting/materials/cardboard_block"
},
"trigger": "minecraft:recipe_unlocked"
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
],
"rewards": {
"recipes": [
"create:crafting/materials/cardboard_block"
]
},
"sends_telemetry_event": false
}

View file

@ -0,0 +1,35 @@
{
"parent": "minecraft:recipes/root",
"criteria": {
"has_item": {
"conditions": {
"items": [
{
"items": [
"create:cardboard"
]
}
]
},
"trigger": "minecraft:inventory_changed"
},
"has_the_recipe": {
"conditions": {
"recipe": "create:crafting/materials/cardboard_from_block"
},
"trigger": "minecraft:recipe_unlocked"
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
],
"rewards": {
"recipes": [
"create:crafting/materials/cardboard_from_block"
]
},
"sends_telemetry_event": false
}

View file

@ -0,0 +1,21 @@
{
"type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
],
"entries": [
{
"type": "minecraft:item",
"name": "create:cardboard_block"
}
],
"rolls": 1.0
}
],
"random_sequence": "create:blocks/cardboard_block"
}

View file

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"C": {
"item": "create:cardboard"
}
},
"pattern": [
"CC",
"CC"
],
"result": {
"item": "create:cardboard_block"
},
"show_notification": true
}

View file

@ -0,0 +1,13 @@
{
"type": "minecraft:crafting_shapeless",
"category": "misc",
"ingredients": [
{
"item": "create:cardboard_block"
}
],
"result": {
"count": 4,
"item": "create:cardboard"
}
}

View file

@ -4,6 +4,7 @@
"create:zinc_block",
"create:andesite_alloy_block",
"create:brass_block",
"create:cardboard_block",
"create:experience_block"
]
}

View file

@ -0,0 +1,5 @@
{
"values": [
"create:cardboard_block"
]
}

View file

@ -4,6 +4,7 @@
"create:zinc_block",
"create:andesite_alloy_block",
"create:brass_block",
"create:cardboard_block",
"create:experience_block"
]
}

View file

@ -0,0 +1,5 @@
{
"values": [
"create:cardboard_block"
]
}

View file

@ -130,6 +130,7 @@
"create:brown_seat",
"create:green_seat",
"create:red_seat",
"create:black_seat"
"create:black_seat",
"create:cardboard_block"
]
}

View file

@ -54,6 +54,7 @@ import com.simibubi.create.content.contraptions.piston.MechanicalPistonBlock;
import com.simibubi.create.content.contraptions.piston.MechanicalPistonHeadBlock;
import com.simibubi.create.content.contraptions.piston.PistonExtensionPoleBlock;
import com.simibubi.create.content.contraptions.pulley.PulleyBlock;
import com.simibubi.create.content.decoration.CardboardBlock;
import com.simibubi.create.content.decoration.MetalLadderBlock;
import com.simibubi.create.content.decoration.MetalScaffoldingBlock;
import com.simibubi.create.content.decoration.TrainTrapdoorBlock;
@ -2466,6 +2467,20 @@ public class AllBlocks {
.build()
.lang("Block of Brass")
.register();
public static final BlockEntry<CardboardBlock> CARDBOARD_BLOCK =
REGISTRATE.block("cardboard_block", CardboardBlock::new)
.initialProperties(() -> Blocks.MUSHROOM_STEM)
.properties(p -> p.mapColor(MapColor.COLOR_BROWN)
.ignitedByLava())
.transform(axeOnly())
.blockstate(BlockStateGen.horizontalAxisBlockProvider(false))
.tag(Tags.Blocks.STORAGE_BLOCKS)
.transform(tagBlockAndItem("storage_blocks/cardboard"))
.tag(Tags.Items.STORAGE_BLOCKS)
.build()
.lang("Block of Cardboard")
.register();
public static final BlockEntry<ExperienceBlock> EXPERIENCE_BLOCK =
REGISTRATE.block("experience_block", ExperienceBlock::new)

View file

@ -25,6 +25,7 @@ import com.simibubi.create.content.equipment.armor.AllArmorMaterials;
import com.simibubi.create.content.equipment.armor.BacktankItem;
import com.simibubi.create.content.equipment.armor.BacktankItem.BacktankBlockItem;
import com.simibubi.create.content.equipment.armor.BaseArmorItem;
import com.simibubi.create.content.equipment.armor.CardboardHelmetItem;
import com.simibubi.create.content.equipment.armor.DivingBootsItem;
import com.simibubi.create.content.equipment.armor.DivingHelmetItem;
import com.simibubi.create.content.equipment.blueprint.BlueprintItem;
@ -318,7 +319,7 @@ public class AllItems {
CARDBOARD_HELMET =
REGISTRATE
.item("cardboard_helmet",
p -> new BaseArmorItem(AllArmorMaterials.CARDBOARD, ArmorItem.Type.HELMET, p,
p -> new CardboardHelmetItem(AllArmorMaterials.CARDBOARD, ArmorItem.Type.HELMET, p,
Create.asResource("cardboard")))
.tag(forgeItemTag("armors/helmet"))
.register(),

View file

@ -202,6 +202,7 @@ public class AllPartialModels {
public static final List<PartialModel> CONTRAPTION_CONTROLS_INDICATOR = new ArrayList<>();
public static final Map<ResourceLocation, PartialModel> PACKAGES = new HashMap<>();
public static final List<PartialModel> PACKAGES_AS_LIST = new ArrayList<>();
public static final Map<ResourceLocation, PartialModel> PACKAGE_RIGGING = new HashMap<>();
static {
@ -226,7 +227,9 @@ public class AllPartialModels {
for (String size : new String[] { "12x12", "10x12", "12x10", "10x8" }) {
ResourceLocation key = Create.asResource("cardboard_package_" + size);
PACKAGES.put(key, PartialModel.of(Create.asResource("item/packages/cardboard_" + size)));
PartialModel model = PartialModel.of(Create.asResource("item/packages/cardboard_" + size));
PACKAGES.put(key, model);
PACKAGES_AS_LIST.add(model);
PACKAGE_RIGGING.put(key,
PartialModel.of(Create.asResource("item/packages/cardboard_" + size + "_rigging")));
}

View file

@ -0,0 +1,59 @@
package com.simibubi.create.content.decoration;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.core.Direction.AxisDirection;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Mirror;
import net.minecraft.world.level.block.Rotation;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition.Builder;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraft.world.level.block.state.properties.Property;
public class CardboardBlock extends Block {
public static final Property<Axis> HORIZONTAL_AXIS = BlockStateProperties.HORIZONTAL_AXIS;
public CardboardBlock(Properties pProperties) {
super(pProperties);
}
@Override
public BlockState getStateForPlacement(BlockPlaceContext pContext) {
return this.defaultBlockState()
.setValue(HORIZONTAL_AXIS, pContext.getHorizontalDirection()
.getAxis());
}
@Override
public int getFireSpreadSpeed(BlockState state, BlockGetter level, BlockPos pos, Direction direction) {
return 100;
}
@Override
public int getFlammability(BlockState state, BlockGetter level, BlockPos pos, Direction direction) {
return 20;
}
@Override
protected void createBlockStateDefinition(Builder<Block, BlockState> builder) {
super.createBlockStateDefinition(builder.add(HORIZONTAL_AXIS));
}
@Override
public BlockState rotate(BlockState state, Rotation rot) {
return state.setValue(HORIZONTAL_AXIS,
rot.rotate(Direction.get(AxisDirection.POSITIVE, state.getValue(HORIZONTAL_AXIS)))
.getAxis());
}
@Override
public BlockState mirror(BlockState state, Mirror mirrorIn) {
return state;
}
}

View file

@ -1,23 +1,48 @@
package com.simibubi.create.content.equipment.armor;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllItems;
import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.logistics.box.PackageRenderer;
import dev.engine_room.flywheel.lib.model.baked.PartialModel;
import net.createmod.catnip.utility.AnimationTickHolder;
import net.minecraft.util.Mth;
import net.minecraft.world.entity.player.Player;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.event.RenderPlayerEvent;
import net.minecraftforge.event.TickEvent.Phase;
import net.minecraftforge.event.TickEvent.PlayerTickEvent;
import net.minecraftforge.eventbus.api.EventPriority;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
import net.minecraftforge.registries.ForgeRegistries;
@EventBusSubscriber(value = Dist.CLIENT)
public class CardboardArmorHandlerClient {
private static final Cache<UUID, Integer> BOXES_PLAYERS_ARE_HIDING_AS = CacheBuilder.newBuilder()
.expireAfterAccess(1, TimeUnit.SECONDS)
.build();
@SubscribeEvent
public static void keepCacheAliveDesignDespiteNotRendering(PlayerTickEvent event) {
if (event.phase == Phase.START)
return;
Player player = event.player;
if (!CardboardArmorHandler.testForStealth(player))
return;
try {
getCurrentBoxIndex(player);
} catch (ExecutionException e) {
e.printStackTrace();
}
}
@SubscribeEvent(priority = EventPriority.HIGH)
public static void playerRendersAsBoxWhenSneaking(RenderPlayerEvent.Pre event) {
Player player = event.getEntity();
@ -39,10 +64,22 @@ public class CardboardArmorHandlerClient {
Math.min(Math.abs(Mth.cos((AnimationTickHolder.getRenderTime() % 256) / 2.0f)) * 2 / 16f, movement * 5),
0);
float f = Mth.lerp(event.getPartialTick(), player.yRotO, player.getYRot());
PackageRenderer.renderBox(player, -f + -90, ms, event.getMultiBufferSource(), event.getPackedLight(),
AllPartialModels.PACKAGES.get(ForgeRegistries.ITEMS.getKey(AllItems.CARDBOARD_PACKAGE_10x12.get())));
float interpolatedYaw = Mth.lerp(event.getPartialTick(), player.yRotO, player.getYRot());
try {
PartialModel model = AllPartialModels.PACKAGES_AS_LIST.get(getCurrentBoxIndex(player));
PackageRenderer.renderBox(player, -interpolatedYaw + -90, ms, event.getMultiBufferSource(),
event.getPackedLight(), model);
} catch (ExecutionException e) {
e.printStackTrace();
}
ms.popPose();
}
private static Integer getCurrentBoxIndex(Player player) throws ExecutionException {
return BOXES_PLAYERS_ARE_HIDING_AS.get(player.getUUID(),
() -> player.level().random.nextInt(AllPartialModels.PACKAGES_AS_LIST.size()));
}
}

View file

@ -0,0 +1,50 @@
package com.simibubi.create.content.equipment.armor;
import com.simibubi.create.Create;
import net.createmod.catnip.utility.animation.LerpedFloat;
import net.createmod.catnip.utility.animation.LerpedFloat.Chaser;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
public class CardboardArmorStealthOverlay extends Gui implements IClientItemExtensions {
public CardboardArmorStealthOverlay() {
super(Minecraft.getInstance(), Minecraft.getInstance()
.getItemRenderer());
}
private static final ResourceLocation PACKAGE_BLUR_LOCATION = Create.asResource("textures/misc/package_blur.png");
private static LerpedFloat opacity = LerpedFloat.linear()
.startWithValue(0)
.chase(0, 0.25f, Chaser.EXP);
public static void clientTick() {
LocalPlayer player = Minecraft.getInstance().player;
if (player == null)
return;
opacity.tickChaser();
opacity.updateChaseTarget(CardboardArmorHandler.testForStealth(player) ? 1 : 0);
}
@Override
public void renderHelmetOverlay(ItemStack stack, Player player, int width, int height, float partialTick) {
Minecraft mc = Minecraft.getInstance();
float value = opacity.getValue(partialTick);
if (value == 0)
return;
screenWidth = width;
screenHeight = height;
renderTextureOverlay(new GuiGraphics(mc, mc.renderBuffers()
.bufferSource()), PACKAGE_BLUR_LOCATION, value);
}
}

View file

@ -0,0 +1,25 @@
package com.simibubi.create.content.equipment.armor;
import java.util.function.Consumer;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.ArmorMaterial;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
public class CardboardHelmetItem extends BaseArmorItem {
public CardboardHelmetItem(ArmorMaterial armorMaterial, Type type, Properties properties,
ResourceLocation textureLoc) {
super(armorMaterial, type, properties, textureLoc);
}
@Override
@OnlyIn(Dist.CLIENT)
public void initializeClient(Consumer<IClientItemExtensions> consumer) {
super.initializeClient(consumer);
consumer.accept(new CardboardArmorStealthOverlay());
}
}

View file

@ -28,7 +28,10 @@ import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
import net.minecraftforge.event.entity.living.LivingAttackEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent.LeftClickBlock;
import net.minecraftforge.event.entity.player.PlayerInteractEvent.LeftClickBlock.Action;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.LogicalSide;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
@EventBusSubscriber
@ -49,14 +52,22 @@ public class CardboardSwordItem extends SwordItem {
}
@Override
public boolean hurtEnemy(ItemStack pStack, LivingEntity pTarget, LivingEntity pAttacker) {
return super.hurtEnemy(pStack, pTarget, pAttacker);
public boolean onLeftClickEntity(ItemStack stack, Player player, Entity entity) {
AllSoundEvents.CARDBOARD_SWORD.playFrom(entity, 0.75f, 1.85f);
return super.onLeftClickEntity(stack, player, entity);
}
@Override
public boolean onLeftClickEntity(ItemStack stack, Player player, Entity entity) {
AllSoundEvents.CARDBOARD_SWORD.playFrom(entity, 0.75f, 1.5f);
return super.onLeftClickEntity(stack, player, entity);
@SubscribeEvent
public static void cardboardSwordsMakeNoiseOnClick(LeftClickBlock event) {
ItemStack itemStack = event.getItemStack();
if (!AllItems.CARDBOARD_SWORD.isIn(itemStack))
return;
if (event.getAction() != Action.START)
return;
if (event.getSide() == LogicalSide.CLIENT)
AllSoundEvents.CARDBOARD_SWORD.playAt(event.getLevel(), event.getPos(), 0.5f, 1.85f, false);
else
AllSoundEvents.CARDBOARD_SWORD.play(event.getLevel(), event.getEntity(), event.getPos(), 0.5f, 1.85f);
}
@SubscribeEvent
@ -84,6 +95,7 @@ public class CardboardSwordItem extends SwordItem {
if (knockbackStrength <= 0)
return;
target.stopRiding();
target.knockback(knockbackStrength * 0.5F, Mth.sin(livingAttacker.getYRot() * Mth.DEG_TO_RAD),
-Mth.cos(livingAttacker.getYRot() * Mth.DEG_TO_RAD));
if ((target.getClassification(false) == MobCategory.MISC

View file

@ -14,6 +14,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.function.UnaryOperator;
import org.jetbrains.annotations.NotNull;
import com.google.common.base.Supplier;
import com.google.common.collect.ImmutableList;
import com.google.gson.JsonArray;
@ -59,8 +61,6 @@ import net.minecraftforge.common.crafting.conditions.ICondition;
import net.minecraftforge.common.crafting.conditions.ModLoadedCondition;
import net.minecraftforge.common.crafting.conditions.NotCondition;
import org.jetbrains.annotations.NotNull;
@SuppressWarnings("unused")
public class StandardRecipeGen extends CreateRecipeProvider {
@ -115,6 +115,16 @@ public class StandardRecipeGen extends CreateRecipeProvider {
.pattern("CCC")
.pattern("CCC")
.pattern("CCC")),
CARDBOARD_BLOCK = create(AllBlocks.CARDBOARD_BLOCK).unlockedBy(AllItems.CARDBOARD::get)
.viaShaped(b -> b.define('C', AllItems.CARDBOARD.get())
.pattern("CC")
.pattern("CC")),
CARDBOARD_FROM_BLOCK = create(AllItems.CARDBOARD).withSuffix("_from_block")
.returns(4)
.unlockedBy(AllItems.CARDBOARD::get)
.viaShapeless(b -> b.requires(AllBlocks.CARDBOARD_BLOCK.get())),
BRASS_COMPACTING =
metalCompacting(ImmutableList.of(AllItems.BRASS_NUGGET, AllItems.BRASS_INGOT, AllBlocks.BRASS_BLOCK),

View file

@ -17,6 +17,7 @@ import com.simibubi.create.content.contraptions.render.ContraptionRenderInfoMana
import com.simibubi.create.content.contraptions.wrench.RadialWrenchHandler;
import com.simibubi.create.content.decoration.girder.GirderWrenchBehavior;
import com.simibubi.create.content.equipment.armor.BacktankArmorLayer;
import com.simibubi.create.content.equipment.armor.CardboardArmorStealthOverlay;
import com.simibubi.create.content.equipment.armor.DivingHelmetItem;
import com.simibubi.create.content.equipment.armor.NetheriteBacktankFirstPersonRenderer;
import com.simibubi.create.content.equipment.armor.NetheriteDivingHandler;
@ -183,6 +184,7 @@ public class ClientEvents {
PackagePortTargetSelectionHandler.tick();
LogisticallyLinkedClientHandler.tick();
DisplayClothOverlayRenderer.tick();
CardboardArmorStealthOverlay.clientTick();
}
@SubscribeEvent

View file

@ -0,0 +1,24 @@
{
"parent": "block/block",
"credit": "Made with Blockbench",
"textures": {
"0": "create:block/cardboard_block_front",
"1": "create:block/cardboard_block_side",
"2": "create:block/cardboard_block_top",
"particle": "create:block/cardboard_block_side"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#0"},
"east": {"uv": [0, 0, 16, 16], "texture": "#1"},
"south": {"uv": [0, 0, 16, 16], "texture": "#0"},
"west": {"uv": [0, 0, 16, 16], "texture": "#1"},
"up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#2"},
"down": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#2"}
}
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View file

@ -0,0 +1,6 @@
{
"texture": {
"blur": true
}
}