重构开火模式逻辑

This commit is contained in:
17146 2024-12-31 16:30:45 +08:00
parent aa9f9caed3
commit 69c82319ba
28 changed files with 74 additions and 130 deletions

View file

@ -291,15 +291,19 @@ public abstract class GunItem extends Item {
return false;
}
public boolean semi(ItemStack stack) {
return false;
public int getFireMode() {
return 0;
}
public boolean burst(ItemStack stack) {
return false;
}
public enum FireMode {
SEMI(1),
BURST(2),
AUTO(4);
public boolean auto(ItemStack stack) {
return false;
public final int flag;
FireMode(int i) {
this.flag = i;
}
}
}

View file

@ -38,6 +38,7 @@ import java.util.Set;
import java.util.function.Consumer;
public class Glock17Item extends GunItem implements GeoItem, AnimatedItem {
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
public static ItemDisplayContext transformType;
@ -169,17 +170,7 @@ public class Glock17Item extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean semi(ItemStack stack) {
return true;
}
@Override
public boolean burst(ItemStack stack) {
return true;
}
@Override
public boolean auto(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.SEMI.flag;
}
}

View file

@ -177,12 +177,7 @@ public class Glock18Item extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean semi(ItemStack stack) {
return true;
}
@Override
public boolean auto(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.SEMI.flag + FireMode.AUTO.flag;
}
}

View file

@ -160,7 +160,7 @@ public class M1911Item extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean semi(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.SEMI.flag;
}
}

View file

@ -345,7 +345,7 @@ public class Trachelium extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean semi(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.SEMI.flag;
}
}

View file

@ -161,7 +161,7 @@ public class DevotionItem extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean auto(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.AUTO.flag;
}
}

View file

@ -185,7 +185,7 @@ public class M60Item extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean auto(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.AUTO.flag;
}
}

View file

@ -162,12 +162,7 @@ public class RpkItem extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean semi(ItemStack stack) {
return true;
}
@Override
public boolean auto(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.SEMI.flag + FireMode.AUTO.flag;
}
}

View file

@ -261,12 +261,7 @@ public class AK12Item extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean semi(ItemStack stack) {
return true;
}
@Override
public boolean auto(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.SEMI.flag + FireMode.AUTO.flag;
}
}

View file

@ -270,12 +270,7 @@ public class AK47Item extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean semi(ItemStack stack) {
return true;
}
@Override
public boolean auto(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.SEMI.flag + FireMode.AUTO.flag;
}
}

View file

@ -272,12 +272,7 @@ public class Hk416Item extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean semi(ItemStack stack) {
return true;
}
@Override
public boolean auto(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.SEMI.flag + FireMode.AUTO.flag;
}
}

View file

@ -271,12 +271,7 @@ public class M4Item extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean semi(ItemStack stack) {
return true;
}
@Override
public boolean auto(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.SEMI.flag + FireMode.AUTO.flag;
}
}

View file

@ -177,7 +177,7 @@ public class MarlinItem extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean semi(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.SEMI.flag;
}
}

View file

@ -270,12 +270,7 @@ public class Mk14Item extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean semi(ItemStack stack) {
return true;
}
@Override
public boolean auto(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.SEMI.flag + FireMode.AUTO.flag;
}
}

View file

@ -268,12 +268,7 @@ public class Qbz95Item extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean semi(ItemStack stack) {
return true;
}
@Override
public boolean auto(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.SEMI.flag + FireMode.AUTO.flag;
}
}

View file

@ -170,7 +170,7 @@ public class SksItem extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean semi(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.SEMI.flag;
}
}

View file

@ -194,12 +194,7 @@ public class Aa12Item extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean semi(ItemStack stack) {
return true;
}
@Override
public boolean auto(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.SEMI.flag + FireMode.AUTO.flag;
}
}

View file

@ -155,7 +155,7 @@ public class AbekiriItem extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean semi(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.SEMI.flag;
}
}

View file

@ -184,7 +184,7 @@ public class M870Item extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean semi(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.SEMI.flag;
}
}

View file

@ -43,6 +43,7 @@ import java.util.Set;
import java.util.function.Consumer;
public class VectorItem extends GunItem implements GeoItem, AnimatedItem {
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
public static ItemDisplayContext transformType;
@ -246,17 +247,7 @@ public class VectorItem extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean semi(ItemStack stack) {
return true;
}
@Override
public boolean burst(ItemStack stack) {
return true;
}
@Override
public boolean auto(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.SEMI.flag + FireMode.BURST.flag + FireMode.AUTO.flag;
}
}

View file

@ -136,7 +136,7 @@ public class HuntingRifleItem extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean semi(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.SEMI.flag;
}
}

View file

@ -184,7 +184,7 @@ public class K98Item extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean semi(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.SEMI.flag;
}
}

View file

@ -167,7 +167,7 @@ public class M98bItem extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean semi(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.SEMI.flag;
}
}

View file

@ -179,7 +179,7 @@ public class MosinNagantItem extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean semi(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.SEMI.flag;
}
}

View file

@ -168,7 +168,7 @@ public class Ntw20Item extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean semi(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.SEMI.flag;
}
}

View file

@ -250,7 +250,7 @@ public class SentinelItem extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean semi(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.SEMI.flag;
}
}

View file

@ -155,7 +155,7 @@ public class SvdItem extends GunItem implements GeoItem, AnimatedItem {
}
@Override
public boolean semi(ItemStack stack) {
return true;
public int getFireMode() {
return FireMode.SEMI.flag;
}
}

View file

@ -60,13 +60,16 @@ public class FireModeMessage {
CompoundTag tag = stack.getOrCreateTag();
int mode = gunItem.getFireMode();
mode &= 0b111;
if (fireMode == 0) {
if (gunItem.burst(stack)) {
if ((mode & 2) != 0) {
GunsTool.setGunIntTag(stack, "FireMode", 1);
playChangeModeSound(player);
return;
}
if (gunItem.auto(stack)) {
if ((mode & 4) != 0) {
GunsTool.setGunIntTag(stack, "FireMode", 2);
playChangeModeSound(player);
return;
@ -74,12 +77,12 @@ public class FireModeMessage {
}
if (fireMode == 1) {
if (gunItem.auto(stack)) {
if ((mode & 4) != 0) {
GunsTool.setGunIntTag(stack, "FireMode", 2);
playChangeModeSound(player);
return;
}
if (gunItem.semi(stack)) {
if ((mode & 1) != 0) {
GunsTool.setGunIntTag(stack, "FireMode", 0);
playChangeModeSound(player);
return;
@ -87,12 +90,12 @@ public class FireModeMessage {
}
if (fireMode == 2) {
if (gunItem.semi(stack)) {
if ((mode & 1) != 0) {
GunsTool.setGunIntTag(stack, "FireMode", 0);
playChangeModeSound(player);
return;
}
if (gunItem.burst(stack)) {
if ((mode & 2) != 0) {
GunsTool.setGunIntTag(stack, "FireMode", 1);
playChangeModeSound(player);
return;