Mirror von
https://github.com/GeyserMC/Geyser.git
synchronisiert 2024-11-20 06:50:09 +01:00
Listen to creeper igniters tag
Dieser Commit ist enthalten in:
Ursprung
3f4ed67597
Commit
d835f81772
@ -33,7 +33,6 @@ import org.cloudburstmc.protocol.bedrock.data.SoundEvent;
|
|||||||
import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
|
import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
|
||||||
import org.geysermc.geyser.entity.EntityDefinition;
|
import org.geysermc.geyser.entity.EntityDefinition;
|
||||||
import org.geysermc.geyser.inventory.GeyserItemStack;
|
import org.geysermc.geyser.inventory.GeyserItemStack;
|
||||||
import org.geysermc.geyser.item.Items;
|
|
||||||
import org.geysermc.geyser.session.GeyserSession;
|
import org.geysermc.geyser.session.GeyserSession;
|
||||||
import org.geysermc.geyser.util.InteractionResult;
|
import org.geysermc.geyser.util.InteractionResult;
|
||||||
import org.geysermc.geyser.util.InteractiveTag;
|
import org.geysermc.geyser.util.InteractiveTag;
|
||||||
@ -66,7 +65,7 @@ public class CreeperEntity extends MonsterEntity {
|
|||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
protected InteractiveTag testMobInteraction(@Nonnull Hand hand, @Nonnull GeyserItemStack itemInHand) {
|
protected InteractiveTag testMobInteraction(@Nonnull Hand hand, @Nonnull GeyserItemStack itemInHand) {
|
||||||
if (itemInHand.asItem() == Items.FLINT_AND_STEEL) { // TODO now uses item tag
|
if (session.getTagCache().isCreeperIgniter(itemInHand.asItem())) {
|
||||||
return InteractiveTag.IGNITE_CREEPER;
|
return InteractiveTag.IGNITE_CREEPER;
|
||||||
} else {
|
} else {
|
||||||
return super.testMobInteraction(hand, itemInHand);
|
return super.testMobInteraction(hand, itemInHand);
|
||||||
@ -76,8 +75,8 @@ public class CreeperEntity extends MonsterEntity {
|
|||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
protected InteractionResult mobInteract(@Nonnull Hand hand, @Nonnull GeyserItemStack itemInHand) {
|
protected InteractionResult mobInteract(@Nonnull Hand hand, @Nonnull GeyserItemStack itemInHand) {
|
||||||
if (itemInHand.asItem() == Items.FLINT_AND_STEEL) {
|
if (session.getTagCache().isCreeperIgniter(itemInHand.asItem())) {
|
||||||
// Ignite creeper
|
// Ignite creeper - as of 1.19.3
|
||||||
session.playSoundEvent(SoundEvent.IGNITE, position);
|
session.playSoundEvent(SoundEvent.IGNITE, position);
|
||||||
return InteractionResult.SUCCESS;
|
return InteractionResult.SUCCESS;
|
||||||
} else {
|
} else {
|
||||||
|
@ -58,6 +58,7 @@ public class TagCache {
|
|||||||
|
|
||||||
/* Items */
|
/* Items */
|
||||||
private IntList axolotlTemptItems;
|
private IntList axolotlTemptItems;
|
||||||
|
private IntList creeperIgniters;
|
||||||
private IntList fishes;
|
private IntList fishes;
|
||||||
private IntList flowers;
|
private IntList flowers;
|
||||||
private IntList foxFood;
|
private IntList foxFood;
|
||||||
@ -94,6 +95,7 @@ public class TagCache {
|
|||||||
|
|
||||||
Map<String, int[]> itemTags = packet.getTags().get("minecraft:item");
|
Map<String, int[]> itemTags = packet.getTags().get("minecraft:item");
|
||||||
this.axolotlTemptItems = IntList.of(itemTags.get("minecraft:axolotl_tempt_items"));
|
this.axolotlTemptItems = IntList.of(itemTags.get("minecraft:axolotl_tempt_items"));
|
||||||
|
this.creeperIgniters = load(itemTags.get("minecraft:creeper_igniters"));
|
||||||
this.fishes = IntList.of(itemTags.get("minecraft:fishes"));
|
this.fishes = IntList.of(itemTags.get("minecraft:fishes"));
|
||||||
this.flowers = IntList.of(itemTags.get("minecraft:flowers"));
|
this.flowers = IntList.of(itemTags.get("minecraft:flowers"));
|
||||||
this.foxFood = IntList.of(itemTags.get("minecraft:fox_food"));
|
this.foxFood = IntList.of(itemTags.get("minecraft:fox_food"));
|
||||||
@ -108,6 +110,13 @@ public class TagCache {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private IntList load(int[] tags) {
|
||||||
|
if (tags == null) {
|
||||||
|
return IntLists.EMPTY_LIST;
|
||||||
|
}
|
||||||
|
return IntList.of(tags);
|
||||||
|
}
|
||||||
|
|
||||||
public void clear() {
|
public void clear() {
|
||||||
this.leaves = IntLists.emptyList();
|
this.leaves = IntLists.emptyList();
|
||||||
this.wool = IntLists.emptyList();
|
this.wool = IntLists.emptyList();
|
||||||
@ -122,6 +131,7 @@ public class TagCache {
|
|||||||
this.requiresDiamondTool = IntLists.emptyList();
|
this.requiresDiamondTool = IntLists.emptyList();
|
||||||
|
|
||||||
this.axolotlTemptItems = IntLists.emptyList();
|
this.axolotlTemptItems = IntLists.emptyList();
|
||||||
|
this.creeperIgniters = IntLists.emptyList();
|
||||||
this.fishes = IntLists.emptyList();
|
this.fishes = IntLists.emptyList();
|
||||||
this.flowers = IntLists.emptyList();
|
this.flowers = IntLists.emptyList();
|
||||||
this.foxFood = IntLists.emptyList();
|
this.foxFood = IntLists.emptyList();
|
||||||
@ -133,6 +143,10 @@ public class TagCache {
|
|||||||
return axolotlTemptItems.contains(item.javaId());
|
return axolotlTemptItems.contains(item.javaId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isCreeperIgniter(Item item) {
|
||||||
|
return creeperIgniters.contains(item.javaId());
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isFish(GeyserItemStack itemStack) {
|
public boolean isFish(GeyserItemStack itemStack) {
|
||||||
return fishes.contains(itemStack.getJavaId());
|
return fishes.contains(itemStack.getJavaId());
|
||||||
}
|
}
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren