重构开火模式逻辑
This commit is contained in:
parent
aa9f9caed3
commit
69c82319ba
28 changed files with 74 additions and 130 deletions
|
@ -291,15 +291,19 @@ public abstract class GunItem extends Item {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean semi(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return false;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean burst(ItemStack stack) {
|
public enum FireMode {
|
||||||
return false;
|
SEMI(1),
|
||||||
}
|
BURST(2),
|
||||||
|
AUTO(4);
|
||||||
|
|
||||||
public boolean auto(ItemStack stack) {
|
public final int flag;
|
||||||
return false;
|
|
||||||
|
FireMode(int i) {
|
||||||
|
this.flag = i;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,7 @@ import java.util.Set;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
public class Glock17Item extends GunItem implements GeoItem, AnimatedItem {
|
public class Glock17Item extends GunItem implements GeoItem, AnimatedItem {
|
||||||
|
|
||||||
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||||
public static ItemDisplayContext transformType;
|
public static ItemDisplayContext transformType;
|
||||||
|
|
||||||
|
@ -169,17 +170,7 @@ public class Glock17Item extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean semi(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.SEMI.flag;
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean burst(ItemStack stack) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean auto(ItemStack stack) {
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -177,12 +177,7 @@ public class Glock18Item extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean semi(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.SEMI.flag + FireMode.AUTO.flag;
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean auto(ItemStack stack) {
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -160,7 +160,7 @@ public class M1911Item extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean semi(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.SEMI.flag;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -345,7 +345,7 @@ public class Trachelium extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean semi(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.SEMI.flag;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -161,7 +161,7 @@ public class DevotionItem extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean auto(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.AUTO.flag;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -185,7 +185,7 @@ public class M60Item extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean auto(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.AUTO.flag;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -162,12 +162,7 @@ public class RpkItem extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean semi(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.SEMI.flag + FireMode.AUTO.flag;
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean auto(ItemStack stack) {
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -261,12 +261,7 @@ public class AK12Item extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean semi(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.SEMI.flag + FireMode.AUTO.flag;
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean auto(ItemStack stack) {
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -270,12 +270,7 @@ public class AK47Item extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean semi(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.SEMI.flag + FireMode.AUTO.flag;
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean auto(ItemStack stack) {
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -272,12 +272,7 @@ public class Hk416Item extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean semi(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.SEMI.flag + FireMode.AUTO.flag;
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean auto(ItemStack stack) {
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -271,12 +271,7 @@ public class M4Item extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean semi(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.SEMI.flag + FireMode.AUTO.flag;
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean auto(ItemStack stack) {
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -177,7 +177,7 @@ public class MarlinItem extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean semi(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.SEMI.flag;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -270,12 +270,7 @@ public class Mk14Item extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean semi(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.SEMI.flag + FireMode.AUTO.flag;
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean auto(ItemStack stack) {
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -268,12 +268,7 @@ public class Qbz95Item extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean semi(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.SEMI.flag + FireMode.AUTO.flag;
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean auto(ItemStack stack) {
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -170,7 +170,7 @@ public class SksItem extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean semi(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.SEMI.flag;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -194,12 +194,7 @@ public class Aa12Item extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean semi(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.SEMI.flag + FireMode.AUTO.flag;
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean auto(ItemStack stack) {
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -155,7 +155,7 @@ public class AbekiriItem extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean semi(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.SEMI.flag;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -184,7 +184,7 @@ public class M870Item extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean semi(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.SEMI.flag;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -43,6 +43,7 @@ import java.util.Set;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
public class VectorItem extends GunItem implements GeoItem, AnimatedItem {
|
public class VectorItem extends GunItem implements GeoItem, AnimatedItem {
|
||||||
|
|
||||||
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||||
public static ItemDisplayContext transformType;
|
public static ItemDisplayContext transformType;
|
||||||
|
|
||||||
|
@ -246,17 +247,7 @@ public class VectorItem extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean semi(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.SEMI.flag + FireMode.BURST.flag + FireMode.AUTO.flag;
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean burst(ItemStack stack) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean auto(ItemStack stack) {
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -136,7 +136,7 @@ public class HuntingRifleItem extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean semi(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.SEMI.flag;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -184,7 +184,7 @@ public class K98Item extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean semi(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.SEMI.flag;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -167,7 +167,7 @@ public class M98bItem extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean semi(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.SEMI.flag;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -179,7 +179,7 @@ public class MosinNagantItem extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean semi(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.SEMI.flag;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -168,7 +168,7 @@ public class Ntw20Item extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean semi(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.SEMI.flag;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -250,7 +250,7 @@ public class SentinelItem extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean semi(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.SEMI.flag;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -155,7 +155,7 @@ public class SvdItem extends GunItem implements GeoItem, AnimatedItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean semi(ItemStack stack) {
|
public int getFireMode() {
|
||||||
return true;
|
return FireMode.SEMI.flag;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -60,13 +60,16 @@ public class FireModeMessage {
|
||||||
|
|
||||||
CompoundTag tag = stack.getOrCreateTag();
|
CompoundTag tag = stack.getOrCreateTag();
|
||||||
|
|
||||||
|
int mode = gunItem.getFireMode();
|
||||||
|
mode &= 0b111;
|
||||||
|
|
||||||
if (fireMode == 0) {
|
if (fireMode == 0) {
|
||||||
if (gunItem.burst(stack)) {
|
if ((mode & 2) != 0) {
|
||||||
GunsTool.setGunIntTag(stack, "FireMode", 1);
|
GunsTool.setGunIntTag(stack, "FireMode", 1);
|
||||||
playChangeModeSound(player);
|
playChangeModeSound(player);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (gunItem.auto(stack)) {
|
if ((mode & 4) != 0) {
|
||||||
GunsTool.setGunIntTag(stack, "FireMode", 2);
|
GunsTool.setGunIntTag(stack, "FireMode", 2);
|
||||||
playChangeModeSound(player);
|
playChangeModeSound(player);
|
||||||
return;
|
return;
|
||||||
|
@ -74,12 +77,12 @@ public class FireModeMessage {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fireMode == 1) {
|
if (fireMode == 1) {
|
||||||
if (gunItem.auto(stack)) {
|
if ((mode & 4) != 0) {
|
||||||
GunsTool.setGunIntTag(stack, "FireMode", 2);
|
GunsTool.setGunIntTag(stack, "FireMode", 2);
|
||||||
playChangeModeSound(player);
|
playChangeModeSound(player);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (gunItem.semi(stack)) {
|
if ((mode & 1) != 0) {
|
||||||
GunsTool.setGunIntTag(stack, "FireMode", 0);
|
GunsTool.setGunIntTag(stack, "FireMode", 0);
|
||||||
playChangeModeSound(player);
|
playChangeModeSound(player);
|
||||||
return;
|
return;
|
||||||
|
@ -87,12 +90,12 @@ public class FireModeMessage {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fireMode == 2) {
|
if (fireMode == 2) {
|
||||||
if (gunItem.semi(stack)) {
|
if ((mode & 1) != 0) {
|
||||||
GunsTool.setGunIntTag(stack, "FireMode", 0);
|
GunsTool.setGunIntTag(stack, "FireMode", 0);
|
||||||
playChangeModeSound(player);
|
playChangeModeSound(player);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (gunItem.burst(stack)) {
|
if ((mode & 2) != 0) {
|
||||||
GunsTool.setGunIntTag(stack, "FireMode", 1);
|
GunsTool.setGunIntTag(stack, "FireMode", 1);
|
||||||
playChangeModeSound(player);
|
playChangeModeSound(player);
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Add table
Reference in a new issue