Skip to content

Commit d728a91

Browse files
committed
v0.0.5.2
1 parent 28b55af commit d728a91

File tree

11 files changed

+117
-57
lines changed

11 files changed

+117
-57
lines changed

gradle.properties

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@ org.gradle.configuration-cache=false
77

88
# Fabric Properties
99
# check these on https://fabricmc.net/develop
10-
minecraft_version=1.21.9
11-
yarn_mappings=1.21.9+build.1
10+
minecraft_version=1.21.10
11+
yarn_mappings=1.21.10+build.1
1212
loader_version=0.17.2
1313
loom_version=1.11-SNAPSHOT
1414

1515
# Mod Properties
16-
mod_version=0.0.5.1
16+
mod_version=0.0.5.2
1717
maven_group=net.db64.homelawnsecurity
1818
archives_base_name=homelawnsecurity
1919

2020
# Dependencies
21-
fabric_version=0.134.0+1.21.9
21+
fabric_version=0.135.0+1.21.10

src/main/java/net/db64/homelawnsecurity/entity/client/other/CurrencyRenderState.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66

77
public class CurrencyRenderState extends EntityRenderState {
88
public ItemStack stack = ItemStack.EMPTY;
9-
public float scale = 1.0f;
9+
public float scale = 1f;
10+
public float alpha = 1f; // HOW DO I FORCE AN ITEM TO RENDER TRANSLUCENT???
11+
public boolean lit = true;
1012

1113
public final ItemRenderState itemRenderState = new ItemRenderState();
1214

src/main/java/net/db64/homelawnsecurity/entity/client/other/CurrencyRenderer.java

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,23 @@
1818

1919
public class CurrencyRenderer extends EntityRenderer<CurrencyEntity, CurrencyRenderState> {
2020
private final ItemModelManager itemModelManager;
21-
//private final boolean lit;
2221

23-
public CurrencyRenderer(EntityRendererFactory.Context context, boolean lit) {
22+
/*public CurrencyRenderer(EntityRendererFactory.Context context, boolean lit) {
2423
super(context);
2524
this.itemModelManager = context.getItemModelManager();
26-
//this.lit = lit;
27-
}
25+
this.lit = lit;
26+
}*/
2827

2928
public CurrencyRenderer(EntityRendererFactory.Context context) {
30-
this(context, false);
29+
//this(context, true);
30+
super(context);
31+
this.itemModelManager = context.getItemModelManager();
3132
}
3233

33-
@Override
34+
/*@Override
3435
protected int getBlockLight(CurrencyEntity entity, BlockPos pos) {
35-
//return this.lit ? 15 : super.getBlockLight(entity, pos);
36-
return 15;
37-
}
36+
return this.lit ? 15 : super.getBlockLight(entity, pos);
37+
}*/
3838

3939
/*@Override
4040
protected int getSkyLight(CurrencyEntity entity, BlockPos pos) {
@@ -77,17 +77,24 @@ public CurrencyRenderState createRenderState() {
7777
@Override
7878
public void updateRenderState(CurrencyEntity entity, CurrencyRenderState state, float f) {
7979
super.updateRenderState(entity, state, f);
80+
8081
ItemStack stack = entity.getStack();
8182

8283
this.itemModelManager.updateForNonLivingEntity(state.itemRenderState, stack, ItemDisplayContext.GROUND, entity);
8384

8485
/*state.model = !stack.isEmpty() ? this.itemModelManager.getModel(stack, entity.getEntityWorld(), null, entity.getId()) : null;
8586
state.stack = stack.copy();*/
8687
CurrencyComponent currency = stack.get(ModDataComponentTypes.CURRENCY);
87-
if (currency != null)
88+
if (currency != null) {
8889
state.scale = MathHelper.clampedMap(currency.amount(), 5f, 50f, 0.5f, 5f);
89-
else
90+
state.lit = true;
91+
}
92+
else {
9093
state.scale = 1.0f;
94+
state.lit = false;
95+
}
9196

97+
if (state.lit)
98+
state.light = 15728880;
9299
}
93100
}

src/main/java/net/db64/homelawnsecurity/entity/custom/SeedPlacedEntity.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,11 @@
1313
import net.minecraft.entity.player.PlayerEntity;
1414
import net.minecraft.item.ItemStack;
1515
import net.minecraft.item.Items;
16-
import net.minecraft.nbt.NbtCompound;
1716
import net.minecraft.server.world.ServerWorld;
1817
import net.minecraft.storage.ReadView;
1918
import net.minecraft.storage.WriteView;
2019
import net.minecraft.text.Style;
2120
import net.minecraft.text.Text;
22-
import net.minecraft.text.TextColor;
2321
import net.minecraft.util.ActionResult;
2422
import net.minecraft.util.Hand;
2523
import net.minecraft.util.Identifier;
@@ -160,7 +158,7 @@ public void writeCustomData(WriteView view) {
160158

161159
view.putBoolean("should_drop_spawn_item", shouldDropSpawnItem);
162160

163-
view.put("spawn_item", ItemStack.CODEC, spawnItem);
161+
view.put("spawn_item", ItemStack.OPTIONAL_CODEC, ItemStack.EMPTY.copy());
164162
}
165163

166164
@Override
@@ -174,12 +172,15 @@ public void readCustomData(ReadView view) {
174172
}
175173

176174
shouldDropSpawnItem = view.getBoolean("should_drop_spawn_item", false);
175+
spawnItem = view.read("spawn_item", ItemStack.OPTIONAL_CODEC).orElse(ItemStack.EMPTY.copy());
176+
}
177177

178-
ItemStack errorItem = new ItemStack(Items.POISONOUS_POTATO);
179-
errorItem.remove(DataComponentTypes.CONSUMABLE);
180-
errorItem.remove(DataComponentTypes.FOOD);
181-
errorItem.set(DataComponentTypes.ITEM_MODEL, Identifier.ofVanilla("barrier"));
182-
errorItem.set(DataComponentTypes.ITEM_NAME, Text.translatable("error.homelawnsecurity.invalid_spawn_item").setStyle(Style.EMPTY.withColor(16711680)));
183-
spawnItem = view.read("spawn_item", ItemStack.CODEC).orElse(errorItem);
178+
protected ItemStack createErrorItem() {
179+
ItemStack stack = new ItemStack(Items.POISONOUS_POTATO);
180+
stack.remove(DataComponentTypes.CONSUMABLE);
181+
stack.remove(DataComponentTypes.FOOD);
182+
stack.set(DataComponentTypes.ITEM_MODEL, Identifier.ofVanilla("barrier"));
183+
stack.set(DataComponentTypes.ITEM_NAME, Text.translatable("error.homelawnsecurity.invalid_spawn_item").setStyle(Style.EMPTY.withColor(16711680)));
184+
return stack;
184185
}
185186
}

src/main/java/net/db64/homelawnsecurity/entity/custom/other/CurrencyEntity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ private void tickInitialBubbleColumnCollision() {
130130
BlockPos blockPos = (BlockPos)var1.next();
131131
BlockState blockState = this.getEntityWorld().getBlockState(blockPos);
132132
if (blockState.isOf(Blocks.BUBBLE_COLUMN)) {
133-
blockState.onEntityCollision(this.getEntityWorld(), blockPos, this, EntityCollisionHandler.DUMMY);
133+
blockState.onEntityCollision(this.getEntityWorld(), blockPos, this, EntityCollisionHandler.DUMMY, true);
134134
}
135135
}
136136
}

src/main/java/net/db64/homelawnsecurity/entity/custom/projectile/PeaEntity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ private void tickInitialBubbleColumnCollision() {
117117
BlockPos blockPos = (BlockPos)var1.next();
118118
BlockState blockState = this.getEntityWorld().getBlockState(blockPos);
119119
if (blockState.isOf(Blocks.BUBBLE_COLUMN)) {
120-
blockState.onEntityCollision(this.getEntityWorld(), blockPos, this, EntityCollisionHandler.DUMMY);
120+
blockState.onEntityCollision(this.getEntityWorld(), blockPos, this, EntityCollisionHandler.DUMMY, true);
121121
}
122122
}
123123
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package net.db64.homelawnsecurity.mixin;
2+
3+
import net.db64.homelawnsecurity.particle.ModParticles;
4+
import net.db64.homelawnsecurity.particle.custom.EntityParticleRenderer;
5+
import net.minecraft.client.particle.ParticleManager;
6+
import net.minecraft.client.particle.ParticleRenderer;
7+
import net.minecraft.client.particle.ParticleTextureSheet;
8+
import org.spongepowered.asm.mixin.Mixin;
9+
import org.spongepowered.asm.mixin.injection.At;
10+
import org.spongepowered.asm.mixin.injection.Inject;
11+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
12+
13+
@Mixin(ParticleManager.class)
14+
public abstract class ParticleManagerMixin {
15+
@Inject(
16+
method = "Lnet/minecraft/client/particle/ParticleManager;createParticleRenderer(Lnet/minecraft/client/particle/ParticleTextureSheet;)Lnet/minecraft/client/particle/ParticleRenderer;",
17+
at = @At(
18+
value = "RETURN",
19+
ordinal = 2
20+
)
21+
)
22+
public void addParticleTypes(ParticleTextureSheet textureSheet, CallbackInfoReturnable<ParticleRenderer<?>> cir) {
23+
if (textureSheet == ModParticles.SHEET_ENTITY) {
24+
cir.setReturnValue(new EntityParticleRenderer((ParticleManager) (Object) this));
25+
}
26+
}
27+
}

src/main/java/net/db64/homelawnsecurity/particle/ModParticles.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
import com.mojang.serialization.MapCodec;
44
import net.db64.homelawnsecurity.HomeLawnSecurity;
5+
import net.db64.homelawnsecurity.particle.custom.EntityParticleRenderer;
6+
import net.db64.homelawnsecurity.particle.custom.MarkerParticle;
7+
import net.fabricmc.fabric.api.client.particle.v1.ParticleFactoryRegistry;
8+
import net.fabricmc.fabric.api.client.particle.v1.ParticleRendererRegistry;
59
import net.fabricmc.fabric.api.particle.v1.FabricParticleTypes;
610
import net.minecraft.client.particle.ParticleTextureSheet;
711
import net.minecraft.network.RegistryByteBuf;
@@ -14,15 +18,18 @@
1418
import java.util.function.Function;
1519

1620
public class ModParticles {
17-
/*public static final ParticleType<ItemStackParticleEffect>
21+
public static final ParticleType<ItemStackParticleEffect>
1822
MARKER = register(
19-
"marker", true, ItemStackParticleEffect::createCodec, ItemStackParticleEffect::createPacketCodec
20-
);*/
23+
"marker", true, ItemStackParticleEffect::createCodec, ItemStackParticleEffect::createPacketCodec
24+
);
2125

22-
public static final ParticleTextureSheet SHEET_ENTITY
26+
public static final ParticleTextureSheet SHEET_ENTITY = new ParticleTextureSheet("pvz_entity");
2327

2428
public static void registerParticles() {
2529
HomeLawnSecurity.LOGGER.info("Registering particles for {}", HomeLawnSecurity.MOD_ID);
30+
31+
ParticleRendererRegistry.register(SHEET_ENTITY, EntityParticleRenderer::new);
32+
ParticleFactoryRegistry.getInstance().register(MARKER, new MarkerParticle.Factory());
2633
}
2734

2835
private static SimpleParticleType register(String name, boolean alwaysShow) {

src/main/java/net/db64/homelawnsecurity/particle/custom/MarkerParticle.java

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,27 @@
11
package net.db64.homelawnsecurity.particle.custom;
22

3+
import net.db64.homelawnsecurity.entity.ModEntities;
4+
import net.db64.homelawnsecurity.entity.client.other.CurrencyRenderState;
5+
import net.db64.homelawnsecurity.entity.custom.other.CurrencyEntity;
6+
import net.db64.homelawnsecurity.particle.ModParticles;
7+
import net.fabricmc.api.EnvType;
8+
import net.fabricmc.api.Environment;
9+
import net.minecraft.client.MinecraftClient;
310
import net.minecraft.client.particle.*;
411
import net.minecraft.client.render.entity.state.EntityRenderState;
512
import net.minecraft.client.world.ClientWorld;
613
import net.minecraft.entity.Entity;
14+
import net.minecraft.particle.ItemStackParticleEffect;
15+
import net.minecraft.util.math.Vec3d;
16+
import net.minecraft.util.math.random.Random;
17+
import org.jetbrains.annotations.Nullable;
718

819
public class MarkerParticle extends Particle {
920
//protected List<Sprite> sprites;
1021
//protected int curSprite = 0;
1122

1223
protected int ticksExisted;
13-
public float alpha;
24+
public float alpha; // HOW DO I FORCE AN ITEM TO RENDER TRANSLUCENT???
1425

1526
//private final Entity itemEntity;
1627
protected final EntityRenderState renderState;
@@ -31,7 +42,7 @@ public MarkerParticle(ClientWorld world, EntityRenderState renderState, Entity i
3142

3243
@Override
3344
public ParticleTextureSheet textureSheet() {
34-
return ParticleTextureSheet.NO_RENDER;
45+
return ModParticles.SHEET_ENTITY;
3546
}
3647

3748
/*private Entity getOrCopy(Entity entity) {
@@ -83,12 +94,16 @@ protected float getMaxV() {
8394
return this.sprites.get(curSprite).getMaxV();
8495
}*/
8596

86-
/*@Environment(EnvType.CLIENT)
97+
@Environment(EnvType.CLIENT)
8798
public static class Factory implements ParticleFactory<ItemStackParticleEffect> {
8899
@Nullable
89100
@Override
90-
public Particle createParticle(ItemStackParticleEffect parameters, ClientWorld world, double x, double y, double z, double velocityX, double velocityY, double velocityZ) {
91-
return new MarkerParticle(world, x, y, z, parameters.getItemStack());
101+
public Particle createParticle(ItemStackParticleEffect parameters, ClientWorld world, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Random random) {
102+
CurrencyEntity entity = new CurrencyEntity(x, y, z, world, parameters.getItemStack());
103+
//CurrencyRenderState renderState = new CurrencyRenderState();
104+
//renderState.entityType = ModEntities.Other.CURRENCY;
105+
EntityRenderState renderState = MinecraftClient.getInstance().getEntityRenderDispatcher().getRenderer(entity).getAndUpdateRenderState(entity, 0f);
106+
return new MarkerParticle(world, renderState, entity);
92107
}
93-
}*/
108+
}
94109
}

src/main/resources/fabric.mod.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
"accessWidener": "homelawnsecurity.accesswidener",
3232
"depends": {
3333
"fabricloader": ">=0.17.2",
34-
"minecraft": "~1.21.9",
34+
"minecraft": "~1.21.10",
3535
"java": ">=21",
3636
"fabric-api": "*"
3737
},

0 commit comments

Comments
 (0)